0
docker build --rm=true
這是默認選項,它使得它在成功構建後刪除所有中間圖像。Docker --rm = true是否會影響緩存?
它會對緩存產生不利影響嗎?由於緩存依賴於我認爲的中間圖像?
docker build --rm=true
這是默認選項,它使得它在成功構建後刪除所有中間圖像。Docker --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被保留。
您無法刪除最終圖像所需的中間圖像(圖像是最後一個圖層加上所有祖先圖層)。
非常好。現在我意識到,在--- --->運行在2e5ff13506e5 ---> fd4dd6845e31',前者是指容器,後者是指圖像。 – colinfang
正是。這是一個很好的觀點,所以我將它添加到答案中。 –