10soo 发表于 2017-09-20 15:29:04

构建容器镜像的方式

1.从容器构建镜像(以下简称容器镜像)
创建一个容器,比如使用 tomcat:latest 镜像创建一个tomcat-test容器
修改tomcat-test容器的文件系统,比如修改tomcat的server.xml文件中的默认端口
使用commit命令提交镜像

2.使用Dockerfile构建镜像(以下简称Dockerfile镜像)
编写Dockerfile文件
使用build命令构建镜像

两种构建方式的区别:

1.容器镜像的构建者可以任意修改容器的文件系统后进行发布,这种修改对于镜像使用者来说是不透明的,镜像构建者一般也不会将对容器文件系统的每一步修改,记录进文档中,供镜像使用者参考。

2.容器镜像不能(更准确地说是不建议)通过修改,生成新的容器镜像。
从镜像运行容器,实际上是在镜像顶部上加了一层可写层,所有对容器文件系统的修改,都在这一层中进行,不影响已经存在的层。比如在容器中删除一个1G的文件,从用户的角度看,容器中该文件已经没有了,但从文件系统的角度看,文件其实还在,只不过在顶层中标记该文件已被删除,当然这个标记为已删除的文件还会占用镜像空间。从容器构建镜像,实际上是把容器的顶层固化到镜像中。
也就是说, 对容器镜像进行修改后,生成新的容器镜像,会多一层,而且镜像的体积只会增大,不会减小。长此以往,镜像将变得越来越臃肿。Docker提供的 export 和 import 命令可以一定程度上处理该问题,但也并不是没有缺点。

3.容器镜像依赖的父镜像变化时,容器镜像必须进行重新构建。如果没有编写自动化构建脚本,而是手工构建的,那么又要重新修改容器的文件系统,再进行构建,这些重复劳动其实是没有价值的。

4.Dockerfile镜像是完全透明的,所有用于构建镜像的指令都可以通过Dockerfile看到。甚至你还可以递归找到本镜像的任何父镜像的构建指令。也就是说,你可以完全了解一个镜像是如何从零开始,通过一条条指令构建出来的。

5.Dockerfile镜像需要修改时,可以通过修改Dockerfile中的指令,再重新构建生成,没有任何问题。

6.Dockerfile可以在GitHub等源码管理网站上进行托管,DockerHub自动关联源码进行构建。当你的Dockerfile变动,或者依赖的父镜像变动,都会触发镜像的自动构建,非常方便。

如想了解更多关于容器管理的内容,请关注云星数据www.cloud-star.com.cn


wyoven 发表于 2018-04-20 08:21:34

是这个样子。。。。

SEO群137303464 发表于 2025-11-08 20:02:24

讨论氛围真好,大家都在真诚分享,点赞论坛

wmc32322 发表于 2025-11-11 21:24:58

分析得很透彻,很多细节都说到点子上了~

q18055 发表于 2026-01-14 12:41:50

感谢无私分享,帮我省了很多查资料的时间

铭普科技小然 发表于 2026-01-30 18:37:58

天涯 发表于 2026-02-04 16:29:05

支持这样的真实交流,比单纯的广告有意义多了

太阳 发表于 2026-02-05 16:21:37

逻辑很清晰,一步步看下来完全不费劲

小城 发表于 2026-02-05 21:43:11

楼主辛苦了,整理这么多内容,必须点赞收藏

戴草帽的王子 发表于 2026-02-05 23:11:43

确实是这样,很多细节只有真正经历过的人才会懂,总结得很到位。

52show8 发表于 2026-02-06 10:29:24

没想到能看到这么详细的讲解,关键信息都标注出来了,对新手特别友好。

radarxu 发表于 2026-02-06 11:39:14

太赞了,解决了我纠结很久的问题

Axluo 发表于 2026-02-06 13:55:00

戳中要点了,原本模糊的想法被你梳理得明明白白,收获很大。

偷懒的萌猫 发表于 2026-02-06 14:48:42

看完收获满满,谢谢楼主的用心整理

soolanet 发表于 2026-02-06 20:25:43

我也来分享下我的经验,和楼主的方法可以互补

村长 发表于 2026-02-06 22:41:30

这个问题一直有争议,你给出的分析很客观,兼顾了不同立场,值得细品。

暴驰CC防火墙 发表于 2026-02-07 03:32:24

按这个方法试了下,确实有效果,推荐给大家

whgbyy11 发表于 2026-02-07 12:14:44

内容很实用,步骤清晰可操作,省去自己大量试错时间,真心感谢分享。

黑丝美女 发表于 2026-02-07 14:39:00

楼主太厉害了,整理得这么详细,必须支持

songpeihe 发表于 2026-02-07 17:17:57

页: [1] 2
查看完整版本: 构建容器镜像的方式