docker images -q -a | xargs docker inspect --format='{{.Id}}{{range $rt := .RepoTags}} {{$rt}} {{end}}'|grep -v ':'
但是,其他一些可能需要其中一些未标记的图像。
我更喜欢只删除悬空的图像:
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
正如我在2016年9月针对“ docker 1.13+”中提到的“ 如何删除旧的和未使用的Docker映像 ”中所述,您还可以执行以下image prune
命令:
docker image prune
话虽如此,Janaka Bandara在评论中提到:
这并 没有<none>
为我删除带有标签的图像(例如foo/bar:<none>
);我不得不使用docker images --digests
和docker rmi foo/bar@<digest>
Janaka 从 引用了“如何删除带有标签的签名图像 ” :
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
pvnovarese/mprime latest 459769dbc7a1 5 days ago 4.461 MB
pvnovarese/mprime <none> 459769dbc7a1 5 days ago 4.461 MB
如果使用该 则可以看到这两个条目的区别(未标记的条目具有Docker Content Trust签名摘要):
# docker images --digests=true
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
pvnovarese/mprime latest <none> 459769dbc7a1 5 days ago 4.461 MB
pvnovarese/mprime <none> sha256:0b315a681a6b9f14f93ab34f3c744fd547bda30a03b55263d93861671fa33b00 459769dbc7a1 5 days ago
请注意,Paul还提到了Moby问题18892:
拉取签名的图像后,<none>
“ docker images
”输出中会有一个“额外”条目(带有标记)。 这使rmi
图像难以处理(您必须强行使用图像,否则首先删除标记正确的条目,或通过摘要删除)。