大佬教程收集整理的这篇文章主要介绍了为什么 docker build with --squash 创建中间图像,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道 --squash
标志并不总是推荐用于 docker build
命令,但我想了解此标志的行为。
我使用以下命令创建了一个 docker 镜像(在本例中它基于 NVIDIA 父镜像):
docker build -t nvIDia .
docker images
显示如下:
REPOSITORY TAG IMAGE ID CREATED SIZE
nvIDia latest b956431d1f05 6 seconds ago 9.31GB
之后,我使用相同的 Dockerfile 创建了另一个带有 --squash 的图像:
docker build --squash -t nvIDia-squash .
现在 docker images
显示以下内容:
REPOSITORY TAG IMAGE ID CREATED SIZE
nvIDia-squash latest d7b3968277d4 4 seconds ago 9.31GB
<none> <none> 66154f6a6cd4 4 seconds ago 9.31GB
nvIDia latest b956431d1f05 7 minutes ago 9.31GB
我们可以看到,squash 选项会导致构建一个中间图像。
为什么?
The documentation is explicit;加粗以强调:
构建图像后,将新图层压缩为具有单个新图层的新图像。
因此,squash 不会改变图像的构建方式;它只会在构建完成后添加一个新步骤。此外,文档还明确涵盖了中间层仍然被创建并存储在构建缓存中;来自已知限制部分:
使用此选项时,您可能会看到由于存储图像的两个副本而使用的空间明显更多,一个用于构建缓存,所有缓存层都完好无损,另一个用于压缩版本。
以上是大佬教程为你收集整理的为什么 docker build with --squash 创建中间图像全部内容,希望文章能够帮你解决为什么 docker build with --squash 创建中间图像所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。