您可以尝试仅列出未标记的图像(无标签或无标签的图像):
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映像
”中所述,您还可以执行以下
imageprune命令:
docker image prune
话虽如此,Janaka Bandara在评论中提到:
这并 没有
<none>为我删除带有标签的图像(例如foo/bar:<none>);我不得不使用docker images--digests和docker rmi foo/bar@<digest>
Janaka 从 Paul V. Novarese 引用了“
如何删除带有标签的签名图像
” :
# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEpvnovarese/mprime latest 459769dbc7a1 5 days ago 4.461 MBpvnovarese/mprime <none> 459769dbc7a1 5 days ago 4.461 MB
诊断步骤
如果使用该
--digests=true
选项,则可以看到这两个条目的区别(未标记的条目具有Docker Content Trust签名摘要):
# docker images --digests=trueREPOSITORY TAG DIGEST IMAGE ID CREATED SIZEpvnovarese/mprime latest <none> 459769dbc7a1 5 days ago 4.461 MBpvnovarese/mprime <none> sha256:0b315a681a6b9f14f93ab34f3c744fd547bda30a03b55263d93861671fa33b00 459769dbc7a1 5 days ago
请注意,Paul还提到了Moby问题18892:
拉取签名的图像后,
<none>“docker images”输出中会有一个“额外”条目(带有标记)。
这使rmi图像难以处理(您必须强行使用图像,否则首先删除标记正确的条目,或通过摘要删除)。



