一尘不染

Docker移除 TAG图片

docker

root@server:~# docker images -a
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
5e2dfc857e73 5 days ago 261.6 MB
d053e988f23d 5 days ago 261.6 MB
1d5d4a2d89eb 5 days ago 261.6 MB
ea0d189fdb19 5 days ago 100.5 MB
26c6175962b3 5 days ago 100.5 MB
73d5cec4a0b3 5 days ago 100.5 MB
e19590e1bac1 5 days ago 100.5 MB

我尝试了以下方法:

docker rmi $(docker images | grep "^<none>" | awk "{print $3}")

以及以下内容:

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

得到以下错误:

docker: "rmi" requires a minimum of 1 argument.
See 'docker rmi --help'.

Usage:  docker rmi [OPTIONS] IMAGE [IMAGE...]

Remove one or more images

阅读 280

收藏
2020-06-17

共1个答案

一尘不染

您可以尝试仅列出未标记的图像(无标签或无标签的图像):

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 --digestsdocker rmi foo/bar@<digest>

Janaka 从 Paul V. Novarese 引用了“
如何删除带有标签的签名图像
” :

# 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

诊断步骤

如果使用该 --digests=true
选项,
则可以看到这两个条目的区别(未标记的条目具有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图像难以处理(您必须强行使用图像,否则首先删除标记正确的条目,或通过摘要删除)。

2020-06-17