2015-02-07 17 views
17

當我運行諸如sudo docker rmi me/myimage這樣的命令時我得到了響應...圖像沒有標記,但是當我重新運行sudo docker圖像時,可以看到這個「未標記」圖像仍然存在,並且,如果我運行df -h,則可以看到實際文件仍然存在並佔用文件系統空間。 我可以使用什麼命令或程序來物理刪除不需要的圖像?如何物理移除未標記的碼頭圖像

回答

29

您應該能夠使用"dangling=true"標誌除去未標記的碼頭工人圖片:

sudo docker rmi $(sudo docker images -f "dangling=true" -q) 

來源:

https://docs.docker.com/engine/reference/commandline/images/

+2

我還是一直看到這樣的事情: 5e76bce9b555 3天前3.488 GB f4ef5d62dac0 3天前3.348 GB 1fb11b87d78e 2天前2.707 GB 9f4c46af8113 2天前386.9 MB 22fcde4c8949 2天前16.45 MB c7b84131dd95 – 2015-02-07 02:23:49

+1

你能更專一些嗎? 「繼續看」是什麼意思?如果您通過編輯添加了特定的命令並將輸出添加到您的問題,那將是最好的選擇。最好對你運行的命令以及按照什麼順序非常明確。 – 2015-02-07 02:27:04

+0

當我運行sudo docker圖像時,我看到了許多條目: 9f4c46af8113 2天前386.9 MB – 2015-02-07 02:28:08

1

如果約翰·佩特解決方案不起作用,請嘗試刪除這些指圖像明確當您運行docker images時您會看到IMAGE ID。您可以使用一條命令將其全部刪除

for i in sudo docker images | grep \ | awk'{print $ 3}'; do sudo docker rmi $i; done

PD:我不知道John Petrone的答案。它適用於Docker 1.4.1

18

首先,您需要刪除已退出的容器,然後移除懸掛的圖像。

docker rm $(docker ps -q -f status=exited) 
docker rmi $(docker images -q -f dangling=true) 

畢竟,我創建了下面的腳本作爲〜/ bin/dclean並且一直在使用它。

#!/bin/sh 

processes=`docker ps -q -f status=exited` 
if [ -n "$processes" ]; then 
    docker rm $processes 
fi 

images=`docker images -q -f dangling=true` 
if [ -n "$images" ]; then 
    docker rmi $images 
fi 
+0

不錯,它更完整。去除退出的容器應該是第一步保持清潔 – 2015-08-11 02:31:42

+0

這應該是答案。 – 2016-02-18 21:18:15

0

您可以通過他們的圖片ID刪除單個圖像...

docker images 
docker rmi <image-id> 
相關問題