Docker 删除 <none> 标记图像

新手上路,请多包涵
root@server:~# docker images -a
REPOSITORY              TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
<none>                  <none>              5e2dfc857e73        5 days ago          261.6 MB
<none>                  <none>              d053e988f23d        5 days ago          261.6 MB
<none>                  <none>              1d5d4a2d89eb        5 days ago          261.6 MB
<none>                  <none>              ea0d189fdb19        5 days ago          100.5 MB
<none>                  <none>              26c6175962b3        5 days ago          100.5 MB
<none>                  <none>              73d5cec4a0b3        5 days ago          100.5 MB
<none>                  <none>              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

原文由 basickarl 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 299
2 个回答

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

 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 映像”中针对 docker 1.13+ 提到的,您还可以执行 image prune 命令

 docker image prune


tansadio 建议

 docker images -a | grep none | awk '{ print $3; }' | xargs docker rmi --force

但是,正如 BryanK 所指出的:确保您的存储库名称(或您的标签名称之一)没有字符序列“ none ”,否则它们将与正则表达式匹配并被删除。


话虽如此, 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

请注意,保罗还提到了 moby 问题 18892

提取签名图像后,“ docker images ”输出中有一个“额外”条目(带有标签 <none> )。

这使得 rmi 图像变得困难(你必须强制它,否则首先删除正确标记的条目,或者通过摘要删除。

原文由 VonC 发布,翻译遵循 CC BY-SA 4.0 许可协议

docker images -a | grep none | awk '{ print $3; }' | xargs docker rmi

你可以简单地试试这个

原文由 tansadio 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题