我正在使用 docker ,我发现当我运行一个
docker images -a
我有大量没有标签的图片,或者至少它们有标签
<none>
这些在我的磁盘上浪费了太多空间,现在 df -h 告诉我我的根已满。
我潜伏在互联网上发现
docker rmi -f $(docker images -a | grep "^<none>" | 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 中的某些内容,然后再次运行该命令),旧图像不会被删除;它只是被拿走了它的标签。 <none>
您看到的是没有留下任何标签的图像,您可以通过指定图像 ID(fe336c4cdb2f
或其他)在命令中引用它们。因此,您可以通过将这些 ID 传递给 docker rmi
来删除它们,或者您可以这样做:
docker images -f dangling=true -q | xargs -r docker rmi
如果您仍然收到有关无法删除图像的错误消息,可能是仍然有容器在使用这些旧图像;通过运行 docker ps -a
检查.
关于awk - 无法删除没有标签/<none> 标签的 docker 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31687188/