为什么要在docker文件中串联安装参数?

时间:2019-10-21 10:59:08

标签: linux docker ubuntu

我们的一个项目有一个Dockerfile,其代码如下:

RUN apt-get install -y PACKAGE1 PACKAGE2 PACKAGE3 etc

这等效于:

RUN apt-get install -y PACKAGE1
RUN apt-get install -y PACKAGE2
RUN apt-get install -y PACKAGE3
etc

后一种方法使用更多的字符,但是它更明确,并且(至少对我而言)更易于扫描和直观调试。例如,您可以找到重复的程序包或添加有关为什么需要特定程序包的注释。

像这样在一行上塞满所有内容是否有技术优势?

2 个答案:

答案 0 :(得分:0)

如果使用第二种方法,则将以大型Docker映像结尾,因为每个运行命令都会在映像中创建一个新层。

另一方面,第一个命令将仅为图像创建一个图层。

请参见thisthis

答案 1 :(得分:-1)

第二种方法的优点是,如果您重建图像,则可以重新使用构建的图像层。每层对应于Dockerfile数据操作指令。 Docker缓存未更改的已构建层,并仅根据Dockerfile指令重新构建已更改的层和后续的层。因此,应根据被操纵数据的可变性对数据操纵指令进行排序。例如,像源代码复制这样的 Dockerfile 指令应该位于最后。