如果没有标签/ <无>标签,则无法删除泊坞窗图像

Zac*_*ack 2 awk grep delete-file image-file docker

我正在使用码头工具,我发现当我运行时

docker images -a
Run Code Online (Sandbox Code Playgroud)

我有大量没有标签的图像,或者至少它们有标签

<none>
Run Code Online (Sandbox Code Playgroud)

这些在我的磁盘上浪费了太多的空间,现在一个df -h告诉我我的根已经满了.

我潜伏在互联网上,发现了

docker rmi -f $(docker images -a | grep "^<none>" | awk '{print $3}')
Run Code Online (Sandbox Code Playgroud)

至少会遍历所有没有的,但后来我得到了大量的错误信息.

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>]
Run Code Online (Sandbox Code Playgroud)

这有点令人讨厌.有谁知道这些没有标记的图像是什么,为什么我的命令没有摆脱它们?

jwo*_*der 6

无论何时构建新版本的标记图像(例如,运行docker build -t foo .,更改Dockerfile中的内容,然后再次运行该命令),都不会删除旧图像; 它只是把它的标签带走了.该<none>你请参阅s是没有留下任何标记的图像,用户可以通过指定图像ID(引用它们的命令fe336c4cdb2f或其他).您可以通过将这些ID传递给它们来删除它们docker rmi,或者您可以这样做:

docker images -f dangling=true -q | xargs -r docker rmi
Run Code Online (Sandbox Code Playgroud)

如果您仍然收到有关无法删除图像的错误消息,则可能仍有容器悬挂在使用这些旧图像的位置; 通过运行检查docker ps -a.