2015-02-07 63 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>