程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了为什么 docker build with --squash 创建中间图像大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决为什么 docker build with --squash 创建中间图像?

开发过程中遇到为什么 docker build with --squash 创建中间图像的问题如何解决?下面主要结合日常开发的经验,给出你关于为什么 docker build with --squash 创建中间图像的解决方法建议,希望对你解决为什么 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,请注明来意。