Pie*_*NAY 6 shell docker dockerfile
在Dockerfiles 中,我看到大多数人使用这种语法
RUN apt-get -y update \
&& apt-get install -y libicu-dev
Run Code Online (Sandbox Code Playgroud)
超过这个
RUN apt-get -y update
RUN apt-get install -y libicu-dev
Run Code Online (Sandbox Code Playgroud)
对我来说,第一个仅缓存一行(层),而第二个则缓存两者(我错了吗?),并在命令不成功时立即停止。
此外,我不认为第一个更具可读性。
那么为什么我们要使用第一种语法呢?
根据图像和图层文档
每层只是与之前层的一组差异
例如,创建不同文件的 2 层不会使用更多磁盘空间。特别是因为 Docker 17.05允许多阶段构建。但是,如果第二个完全修改第一个的文件,它仍然可能使用更多空间。
根据Khapov Igor 的评论,我在最佳实践文档中找到了原始问题的真正答案:
apt-get update在语句中单独使用RUN会导致缓存问题并且后续apt-get install指令失败。
它实际上更多的是与先前命令的层依赖关系,其结果可以随着时间的推移而演变,就像apt-get update.
这就是为什么他们说:
始终在同一个语句中结合
RUN apt-get update使用apt-get installRUN
| 归档时间: |
|
| 查看次数: |
1490 次 |
| 最近记录: |