返回指南页目录


本章目录

  • 1. 从Docker-Hub拉取最新Ubuntu镜像
  • 2. 制作新的镜像
  • 3. 导出容器成一个新的镜像
  • 4. 一些容器操作练习(选做)

docker可以从一个镜像生成多个容器,因此可以提前在镜像中安装好JDK,并配置ssh,以及安装一些新的库,给后续的安装节省时间。

1. 从Docker-Hub拉取最新Ubuntu镜像

Linux和Windows的终端不同,但Docker命令相同,以下统称终端。

docker pull ubuntu:latest

这个命令会直接拉取ubuntu的镜像,
如果速度很慢的话,可以考虑给Docker换源。


2. 制作新的镜像

# 创建容器
docker run -itd --name base ubuntu:latest /bin/bash
# 打开容器
docker exec -it base /bin/bash

进入容器后,终端的提示符会变成

root@b22dd79abaca:/#

root是用户名,
b22dd79abaca是主机名,每个容器都不一样。
显示这些,说明成功进入了刚刚创建的名为base的虚拟机。
接下来在虚拟机终端里使用命令。

# 配置国内镜像源
cp /etc/apt/sources.list /etc/apt/sources.list.bak
echo "#添加阿里源
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
#添加清华源
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse multiverse" >> /etc/apt/sources.list
# 更新源
apt-get update
apt-get upgrade
# 安装vim,net-tools,iputils-ping,ssh
apt-get install -y vim
apt-get install -y iputils-ping
apt-get install -y net-tools
apt-get install -y openssh-server

安装openssh-server需要进行选择

Configuring tzdata
------------------
Please select the geographic area in which you live. Subsequent configuration questions will narrow this down by
presenting a list of cities, representing the time zones in which they are located.
1. Africa 3. Antarctica 5. Arctic 7. Atlantic 9. Indian 11. SystemV 13. Etc
2. America 4. Australia 6. Asia 8. Europe 10. Pacific 12. US
Geographic area:6

选择地区(输入6,回车)

Please select the city or region corresponding to your time zone.
1. Aden 16. Brunei 31. Hong_Kong 46. Kuala_Lumpur 61. Pyongyang 76. Tehran
2. Almaty 17. Chita 32. Hovd 47. Kuching 62. Qatar 77. Tel_Aviv
3. Amman 18. Choibalsan 33. Irkutsk 48. Kuwait 63. Qostanay 78. Thimphu
4. Anadyr 19. Chongqing 34. Istanbul 49. Macau 64. Qyzylorda 79. Tokyo
5. Aqtau 20. Colombo 35. Jakarta 50. Magadan 65. Rangoon 80. Tomsk
6. Aqtobe 21. Damascus 36. Jayapura 51. Makassar 66. Riyadh 81. Ujung_Pandang
7. Ashgabat 22. Dhaka 37. Jerusalem 52. Manila 67. Sakhalin 82. Ulaanbaatar
8. Atyrau 23. Dili 38. Kabul 53. Muscat 68. Samarkand 83. Urumqi
9. Baghdad 24. Dubai 39. Kamchatka 54. Nicosia 69. Seoul 84. Ust-Nera
10. Bahrain 25. Dushanbe 40. Karachi 55. Novokuznetsk 70. Shanghai 85. Vientiane
11. Baku 26. Famagusta 41. Kashgar 56. Novosibirsk 71. Singapore 86. Vladivostok
12. Bangkok 27. Gaza 42. Kathmandu 57. Omsk 72. Srednekolymsk 87. Yakutsk
13. Barnaul 28. Harbin 43. Khandyga 58. Oral 73. Taipei 88. Yangon
14. Beirut 29. Hebron 44. Kolkata 59. Phnom_Penh 74. Tashkent 89. Yekaterinburg
15. Bishkek 30. Ho_Chi_Minh 45. Krasnoyarsk 60. Pontianak 75. Tbilisi 90. Yerevan
Time zone:

选择时区(输入70,回车)


安装jdk8。
这一步先退出容器

exit

把指南页提供的jdk8用docker cp命令传给容器。

# 代码格式
docker cp 源主机名:源文件位置 目标主机名:目标路径
docker cp 源文件位置 目标主机名:目标路径
docker cp 源文件位置 base:目标路径
# 因为前面创建容器时,用了参数--name base,所以这里的目标主机名,可以用base代替
# 另外源主机名不填,就默认使用本地路径,也就是localhost,可以省略
# 这个命令在后面经常会用到
# 示例
docker cp g:\BaiduNetdiskDownload\jdk-8u151-linux-x64.tar.gz base:/
# jdk文件在G盘的BaiduNetdiskDownload中,传输到了base的根目录/下。
# 再进入base容器
docker exec -it base /bin/bash

这个时候终端的提示符又会变成下面这种样式

root@b22dd79abaca:/#
# 解压jdk并重命名为jdk8,我一般习惯把软件都放在/usr/local/下
tar -zxvf /jdk-8u151-linux-x64.tar.gz -C /usr/local/jdk8
# 删除jdk安装包
rm /jdk-8u151-linux-x64.tar.gz
# 配置环境变量
vim ~/.bashrc

用vim打开~/.bashrc文件后
在最后一行开始添加内容

service ssh start
export JAVA_HOME=/usr/local/jdk8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
# 保存退出后,重新加载~/.bashrc
source ~/.bashrc

关闭ssh安全询问

# 打开/etc/ssh/ssh_config
vim /etc/ssh/ssh_config
# 添加或修改注释内容,然后保存退出
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
# 重启ssh服务
service ssh restart

配置ssh免密登录

#生成秘钥
ssh-keygen -t rsa -N ''

多敲三次回车,如果有如下提示,则需要先输入y再回车

Overwrite (y/n)?

执行结果

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 加入授权

3. 导出容器成一个新的镜像

# 退出容器
exit
# 导出镜像
docker export base > base.tar
# 导入镜像,名为base:v0
docker import base.tar base:v0

4. 一些容器操作练习(选做)

# 根据镜像base:v0生成新的容器(创建时建议指定name,方便后续操作)
docker run -itd --name node1 base:v0 /bin/bash
docker run -itd --name node2 base:v0 /bin/bash
docker run -itd --name node3 base:v0 /bin/bash
# 进入容器
docker exec -it node1 /bin/bash
# 停止容器
docker stop node1
# 删除容器(需要先停止才能删除容器)
docker rm node1
docker stop node2
docker stop node3
docker rm node2
docker rm node3
# 删除ubuntu:latest镜像
docker rmi ubuntu:latest
# 查看镜像
docker images
# 查看容器
docker ps -a

Docker制作base镜像相关推荐

  1. docker 制作本地镜像_Docker系列-(2) 镜像制作与发布

    上篇文章引入了Docker的基本原理和操作,本节文章主要介绍如何制作Docker镜像和发布. 镜像文件结构 Docker镜像的本质是一系列文件的集合,这些文件依次叠加,形成了最后的镜像文件,类似于下图 ...

  2. docker制作tomcat镜像并部署war包

    模拟面试小白: 需求:有一台没有网络的服务器,使用docker部署war包,没有tomcat镜像,限时30分钟. 小白:没网部署war包干啥,是不是工作不饱和让你们太闲了. 我:傻瓜,怪我没表达清楚, ...

  3. docker 制作 jar 镜像

    第一步:首先在你存放jar包 目录下 创建Dockerfile 文件 touch Dockerfile 第二步:编写制作镜像的命令文件也就是Dockerfile文件 vi Dockerfile #指定 ...

  4. linux使用docker制作PHP镜像及扩展Dockerfile

    新建一个文件夹 mkdir dockerfiles 目录下新建Dockerfile文件(vim Dockerfile),添加以下内容 # PHP官方镜像 FROM php:7.2-fpm# yaf 扩 ...

  5. docker 制作本地镜像_docker如何制作自己的镜像

    一.准备工作 准备一个用来制作镜像的容器.这里我们使用centos安装apache的容器.容器的制作方法如下 # 1.使用centos启动一个交互式容器 docker run -it centos:l ...

  6. Docker 制作Nginx镜像

    系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮 ...

  7. 使用docker制作hexo镜像

    个人博客:戳我,戳我 背景 这段时间一直在折腾我的博客,由于之前出现过一次电脑硬盘完全挂掉的情况,为了避免重新搭建博客系统,一直打算搞一个方便点的环境,能进行多机迁移之类的.正好,Docker完全满足 ...

  8. linux创建空镜像,Docker创建base镜像

    本着学习得态度,想了解创建基础的Docker镜像的方法,于是在Docker的官网上找到了说明,现翻译如下: 首先,创建base image是与所需创建的linux发行版有关的,不同发行版是差异的. 下 ...

  9. Docker 制作 MySQL 镜像并使用 `/docker-entrypoint-initdb.d/` 机制初始化数据

    需求 制作一个 MySQL Docker 镜像并初始化数据库信息 环境 win 11 Docker-Desktop 4.14.0 (91374) 分析 启动一个MySQL容器很容易.如何初始化数据呢? ...

最新文章

  1. access查询女教师所有的信息_【9月3日报名必看】教师资格证报名如何查询报名成功及修改报名信息?...
  2. Python之sort()函数详解
  3. P2024 食物链 (补集)
  4. python需要编译器吗_是否需要“使用严格”的Python编译器?
  5. 【Python学习】 - pyecharts包 - 地图可视化
  6. Flume实战监听网络端口
  7. 更快的Maven来了,我的天,速度提升了8倍!
  8. 如何让DIV模块随着页面固定和不固定
  9. PLSQL 连接不上
  10. VB6.0软件安装包(永久),适用于Windows各系统附安装教程
  11. IPFS(DRAFT 3) 中文版白皮书
  12. cocos creator-js-虚拟摇杆
  13. BLC 以及 线性化
  14. Python set 计算集合的并集,交集,差集以及对称集(补集)
  15. 数学家教你烤肉饼:按最佳时机翻面可节省近1/3烹饪时间,网友:想去汉堡王应聘厨子了...
  16. Linux作业 使用make命令和分析makefile文件
  17. 故障诊断专家系统研究之一-----绪论
  18. 计算机考试照片识别,PS照片JPEGsnoop帮你鉴别
  19. 为有机会进大厂,程序员必须掌握的核心算法有哪些?
  20. 【送书】就业大崩溃,你是否正在从事20年内大概率被淘汰的职业?

热门文章

  1. 2018 dnc .NET Core、.NET开发的大型网站列表、各大公司.NET职位精选,C#王者归来
  2. 基于python的简单名片系统
  3. sow工作任务说明书例子
  4. 一、Excel简介、Excel的基本概念及操作、简单小工具
  5. Qt运行提示QGtkStyle was unable to detect the current GTK+ theme.解决方法
  6. 【Unity】Unity在运行时崩溃了怎么办?别害怕,还有救!
  7. 小米盒子3的刷机方式
  8. Unity Shader GrabPass 使用注意的问题
  9. 哈工大 编译原理 复习笔记
  10. Wordpress 网站设计入门 脚注编辑