2017-07-17 44 views

回答

23

未使用的圖像表示它尚未在容器中分配或使用。例如,在運行docker ps -a時,它會列出所有已退出和當前正在運行的容器。顯示在任何容器內的任何圖像都是「使用的圖像」。

另一方面,一張懸掛的圖像意味着你已經創建了圖像的新版本,但沒有給它一個新的名字。所以你的舊圖像變成了「搖擺的圖像」。那些舊圖像是未標記的,當您運行docker images時,它的名稱上會顯示「<none>」。

當運行docker system prune -a時,它將刪除未使用和懸掛的圖像。因此,在容器中使用的任何圖像,不管是已退出還是正在運行,都不會受到影響。

+0

根據運行docker修剪時的文檔沒有 - 只有懸掛的圖像被刪除。 -a將確保未使用的圖像也被正確刪除? https://docs.docker.com/engine/reference/commandline/system_prune/ – herm

+0

這是正確的,-a將[刪除所有未使用的圖像不只是懸掛的](https://docs.docker.com/engine/reference/commandline/system_prune /) – Serey

+0

非常有趣。所以一個容器可以使用一個搖晃的圖像。 [注意:如果存在任何使用這些未標記圖像的容器,Docker會警告您。](https://docs.docker.com/engine/reference/commandline/images/#filtering) – herm

7

泊塢窗中的圖像被sha256摘要引用,通常被稱爲圖像ID。該摘要就是您需要的圖像存在於碼頭主機上。通常,您將擁有指向這些摘要的標籤,例如標籤busybox:最新的當前指向圖像ID c30178c523 ...在我的系統上。多個標籤可以指向相同的圖像,並且可以改變任何標籤以指向不同的標識,例如,當你拉一個busybox的新副本:最新或建立一個新版本的應用程序圖像。

懸掛圖像是沒有標籤且沒有子圖像的圖像(例如,使用不同版本的FROM busybox:latest的舊圖像)指向它們的圖像。他們可能在之前有一個標籤指向他們,並且標籤後來改變了。或者他們可能從未有過標籤(例如,不包含標籤選項的docker build的輸出)。只要沒有容器仍在運行,這些參考舊圖像ID,這些通常是安全的。保持它們的主要原因是構建緩存目的。

此外,您可能已經下載了當前未被容器(包括已停止的容器)使用的圖像。這些與懸掛圖像完全不同,只要您不打算將來使用它們,或者在您確實需要時再下載另一個副本,則可能會安全刪除。