为什么要在 docker 文件中连接安装参数?



我们的一个项目有一个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

后一种方法使用更多字符,但它更明确,并且(至少对我来说(更容易扫描和可视化调试。例如,您可以查找重复的包或添加有关为什么需要特定包的注释。

像这样将所有内容塞在一条线上是否有技术优势?

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

另一方面,第一个命令只会为图像再创建一个图层。

看到这个和这个

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

最新更新