docker –rm = true是否会影响caching?

docker build --rm=true 

这是默认选项,这使得它在成功构build后删除所有中间图像。

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

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

 $ 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 

所以不,caching仍然有效。 正如你所指出的那样,– --rm实际上是默认开启的(你将不得不运行--rm=false来closures它),但它指的是中间容器而不是中间图像 。 这些是Docker运行构build命令创build映像的容器。 在某些情况下,您可能希望保留这些容器以进行debugging,但通常情况下,这些图像是足够的。 在上面的输出中,我们可以看到被删除的容器 2e5ff13506e5和b2a585989fa5,还有保存的图像 fd4dd6845e31和0093f530941b。

您不能删除最终图像所需的中间图像(图像是最后一个图层加上所有祖先图层)。