docker容器导出为镜像

axing
2023-07-24 / 0 评论 / 4 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2024年09月29日,已超过115天没有更新,若内容或图片失效,请留言反馈。

容器分层

  • 可写层:upperdir
  • 镜像层(只读层):lowerdir
    容器被删掉后,可写层的数据就没了,如果我们的需求是基于一个基础镜像制作一个新镜像,那么我们可以这么做,pul一个基础镜像,然后用该镜像run启动一个容器,然后exec进入容器内部署各种软件做好一些配置,这些写操作都留在了upperdir层,一旦销毁容器一切都不复存在,此时可以在容器外使用commit命令把容器整体upperdir+lowerdir导出为一个新镜像

下载基础镜像

docker pull centos:7

启动容器

docker run -d --name test111 centos:7 sleep 10000

进入容器安装、修改配置、编写启动文件

[root@test03 ~]# docker exec -ti test111 sh
sh-4.2# mkdir /soft
sh-4.2# echo 111 > /soft/1.txt
sh-4.2# echo 222 > /soft/2.txt
sh-4.2# echo "echo start...;tail -f /dev/null" > /soft/run.sh
sh-4.2# exit

commit镜像当前运行的容器,其实就是它的upperdir+lowerdir导出为一个新镜像

[root@test03 ~]# docker commit test111 myimage:v1.0
[root@test03 ~]# docker images
REPOSITORY              TAG       IMAGE ID       CREATED         SIZE
myimage                 v1.0      adfed0daa724   4 seconds ago   204MB
[root@test03 ~]# docker run -d --name test222 myimage:v1.0 sh /soft/run.sh
ea04adcee6d7f157f764d2c8028eb5bdfd9c02a436ba3941c87a58304e853dfa
[root@test03 ~]# 
[root@test03 ~]# 
[root@test03 ~]# docker top test222
UID        PID        PPID        C        STIME        TTY       TIME        CMD
root       21349      21330       0        11:39        ?         00:00:00            sh /soft/run.sh
root       21375      21349       0        11:39        ?         00:00:00            tail -f /dev/null
0

评论 (0)

取消