当前位置: 首页 > 科技观察

Docker镜像分层的注意点

时间:2023-03-15 08:50:15 科技观察

Docker镜像打包程序混淆通常我们在用Docker镜像打包程序的时候总会有点困惑。到底最终的镜像分层封装***总结成程序镜像(即逐层From)合适,还是直接从Sourcecode打包程序产生最终镜像更合适?其实这并没有对错之分,选择还是要看程序包本身的情况。Dockerbuild的注意点如果接触过Docker,大家都知道Dockerbuild的使用方法,但是有几点容易忽略:Dockerfile开头的From和MAINTAINER实际上是一层镜像.如果From和MAINTAINER不一样,即使后面是同样的命令语句,也不会是同一个镜像。比如执行RUNecho"helloworld">>test.txt,如果MAINTAINER不同,这条语句的镜像层就会不同。原则上,如果每一层对应的父层不同,即使执行的命令相同,Docker也会生成新的一层镜像,比如下面两个Dockerfile文件Dockerfile1:FROMcentos:latestMAINTAINERduffqiu@gmail.comRUNecho”test">>hello.txtRUNecho"hello">test.txtDockerfile2:FROMcentos:latestMAINTAINERduffqiu@gmail.comRUNecho"hello">test.txtRUNecho"test">>hello.txt这两个文件的内容只是顺序两个RUN语句不一样,但是***它们生成的图像层是不一样的。你可以通过dockerhistory来比较它们。从这里,也可以看出一个问题。From***不要使用最新的标签,避免不同图片的不同顶层,以至于无法复用。实践表明,这取决于具体情况。如果有一个package是public的,比较大,最好把package格式化成Image,然后再打包给后面的程序使用。如果您需要拉动,它也是最快的。但如果包本身很小,分层太细不利于维护和管理,所以最终还是艺术问题。【本文为专栏作者“VIPDOCKER-Leoge”原创文章,如需转载请通过联系作者】点击此处查看该作者更多好文