Awk 无法删除没有标记的docker图像/<;无>;标签

Awk 无法删除没有标记的docker图像/<;无>;标签,awk,grep,docker,delete-file,image-file,Awk,Grep,Docker,Delete File,Image File,我正在使用,我发现当我运行 docker images -a 我有大量没有标签的图像,或者至少它们有一个标签 <none> 这些在我的磁盘上浪费了太多的空间,现在df-h告诉我我的根目录已满 我潜伏在互联网上发现了这一点 docker rmi -f $(docker images -a | grep "^<none>" | awk '{print $3}') dockerrmi-f$(dockerimages-a | grep ^ | awk'{print$3}

我正在使用,我发现当我运行

docker images -a
我有大量没有标签的图像,或者至少它们有一个标签

<none>

这些在我的磁盘上浪费了太多的空间,现在df-h告诉我我的根目录已满

我潜伏在互联网上发现了这一点

docker rmi -f $(docker images -a | grep "^<none>" | awk '{print $3}')
dockerrmi-f$(dockerimages-a | grep ^ | awk'{print$3}')
将至少遍历所有的none,但随后会收到大量错误消息

Error: response from daemon: Conflict, <id> wasn't deleted
Error: response from daemon: Conflict, <id> wasn't deleted 
Error: response from daemon: Conflict, <id> wasn't deleted
Error: response from daemon: Conflict, <id> wasn't deleted 
etc...
Error: failed to remove images: [<list of all the image ids that I want gone>]
错误:来自后台程序的响应:冲突,未删除
错误:来自守护进程的响应:冲突,未被删除
错误:来自守护进程的响应:冲突,未被删除
错误:来自守护进程的响应:冲突,未被删除
等
错误:无法删除图像:[]

这有点烦人了。有人知道这些没有标记的图像是什么,以及为什么我的命令不能删除它们吗?

每当您构建标记图像的新版本时(例如,运行
docker build-t foo.
,更改Dockerfile中的某些内容,然后再次运行命令),旧图像不会被删除;它的标签被拿走了。您看到的
是没有任何标记的图像,您可以通过指定图像ID(
fe336c4cdb2f
或其他内容)在命令中引用它们。因此,您可以通过将这些ID传递给docker rmi来删除它们,或者您可以执行以下操作:

docker images -f dangling=true -q | xargs -r docker rmi
如果您仍然收到关于无法删除图像的错误消息,则可能仍然有使用这些旧图像的容器;通过运行
docker ps-a

检查存储库中的
,当您专门执行
docker图像时-a
不是要删除的。这些是构成图像的内部层

正如@jwodder所建议的,您应该删除在执行
docker图像时出现的
(注意:我没有执行
-a
)。如果在执行docker图像时在存储库中看到
,则可以执行以下操作:
dockerrmi-f$(dockerimages-f dangling=true-q)


如果您的磁盘空间已满,请尝试删除您不需要的映像,并在执行
docker映像时查看这些映像,而不是使用
-a

没有更多的容器,我可以关闭所有这些容器。实际上,当我运行docker ps-a时,确实有一个映像,但由于某些原因,我无法关闭它。它将确认我的“docker停止”,但当我再次检查时,它仍然是there@Zack:
docker-stop
不移除容器;你需要
docker-rm
。好的,对不起,是的,我刚刚做了。它拆下了容器。我试过你现在给我的命令,但它没有杀死none标签