Docker制作base镜像

Docker制作base镜像,第1张

Docker制作base镜像

Docker制作base镜像
  • 从Docker-Hub拉取最新Ubuntu镜像
  • 制作新的镜像
  • 导出容器成一个新的镜像
  • 一些容器 *** 作练习(选做)

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

从Docker-Hub拉取最新Ubuntu镜像

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

docker pull ubuntu:latest

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


制作新的镜像
# 创建容器
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:BaiduNetdiskDownloadjdk-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 加入授权

导出容器成一个新的镜像
# 退出容器
exit
# 导出镜像
docker export base > base.tar
# 导入镜像,名为base:v0
docker import base.tar base:v0
一些容器 *** 作练习(选做)
# 根据镜像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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4969947.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存