Docker镜像打包程序的困惑

成都创新互联是一家集网站建设,邵阳企业网站建设,邵阳品牌网站建设,网站定制,邵阳网站建设报价,网络营销,网络优化,邵阳网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
通常我们在对程序进行Docker镜像打包的时候总会有些困惑,到底是将最终的镜像分层打包***汇总成程序的镜像(也就是一层一层的From)合适,还是说直接将程序从Source code就打包出最终的镜像更合适呢?其实这里面没有说那个是对或错的,要看程序包自身的情况做选择。
Docker build的注意点
如果接触过Docker,Docker build大家都清楚怎么用了,但是有几个容易忽略的注意点:
- Dockerfile开头的From和MAINTAINER其实都是一层镜像
- 如果From和MAINTAINER不同,就算是后面的命令语句相同也不会是相同的镜像。如都是执行RUN echo "hello world" >> test.txt,如果MAINTAINER不同,则生成的这个语句的镜像层将是不同的。
- 原理上如果每一层对应的父层不同,那怕执行的命令相同,Docker也会生成一层新的镜像,如下面两个Dockerfile文件
Dockerfile 1:
- FROM centos:latest
- MAINTAINER duffqiu@gmail.com
- RUN echo "test" >> hello.txt
- RUN echo "hello" > test.txt
Dockerfile 2:
- FROM centos:latest
- MAINTAINER duffqiu@gmail.com
- RUN echo "hello" > test.txt
- RUN echo "test" >> hello.txt
这两个文件的内容只是两个RUN语句顺序不一样,但是***它们生成的image层是不一样的,可以通过docker history
- 从这里面也看到一个问题,From***不要用lastest标签,避免不同镜像的顶层是不同,从而无法复用。
实践建议
需要看具体情况,如果有一个包是公用的,且比较大,则***先将这个包打成Image再给后续的程序打包使用,这样使用时占用的机器磁盘空间最小,启动时如果需要pull的话也最快。
但是如果包本身就是很小,过细的分层也不利于维护和管理,所以最终还是一个艺术问题。
【本文是专栏作者“VIPDOCKER-了哥 ”的原创文章,如需转载请通过与作者联系】
戳这里,看该作者更多好文
标题名称:Docker镜像分层的注意点
本文地址:http://www.jxjierui.cn/article/cdpscsp.html


咨询
建站咨询
