gpt4 book ai didi

docker - docker --rm=true 会对缓存产生不利影响吗?

转载 作者:行者123 更新时间:2023-12-02 02:04:36 30 4
gpt4 key购买 nike

docker build --rm=true

这是默认选项,它会在成功构建后删除所有中间镜像。

它会对缓存产生不利影响吗?因为缓存依赖于我认为的中间图像?

最佳答案

为什么不尝试一下并找出答案呢?

$ cat Dockerfile 
FROM debian

RUN touch /x
RUN touch /y

$ docker build --rm .
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon
Step 0 : FROM debian
---> df2a0347c9d0
Step 1 : RUN touch /x
---> Running in 2e5ff13506e5
---> fd4dd6845e31
Removing intermediate container 2e5ff13506e5
Step 2 : RUN touch /y
---> Running in b2a585989fa5
---> 0093f530941b
Removing intermediate container b2a585989fa5
Successfully built 0093f530941b

$ docker build --rm .
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon
Step 0 : FROM debian
---> df2a0347c9d0
Step 1 : RUN touch /x
---> Using cache
---> fd4dd6845e31
Step 2 : RUN touch /y
---> Using cache
---> 0093f530941b
Successfully built 0093f530941b

所以不,缓存仍然有效。正如您所指出的, --rm 实际上是默认打开的(您必须运行 --rm=false 将其关闭),但它指的是中间容器而不是中间图像。这些是 Docker 在其中运行构建命令以创建镜像的容器。在某些情况下,您可能希望保留这些容器以进行调试,但通常图像就足够了。在上面的输出中,我们可以看到容器 2e5ff13506e5 和 b2a585989fa5 被删除,而且图像 fd4dd6845e31 和 0093f530941b 被保留。

您无法删除中间图像,因为最终图像需要它们(图像是最后一层加上所有祖先层)。

关于docker - docker --rm=true 会对缓存产生不利影响吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32315996/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com