【发布时间】:2019-05-02 03:33:42
【问题描述】:
当我运行诸如 sudo docker rmi me/myimage 之类的命令时,我得到了响应 ...image untagged,但是,当我重新运行 sudo docker images 时,我可以看到这个“untagged”图像仍然存在,并且,如果我运行 df -h 可以看到实际文件仍然存在并占用文件系统空间。 我可以使用什么命令或程序来物理删除不需要的图像?
【问题讨论】:
标签: docker
当我运行诸如 sudo docker rmi me/myimage 之类的命令时,我得到了响应 ...image untagged,但是,当我重新运行 sudo docker images 时,我可以看到这个“untagged”图像仍然存在,并且,如果我运行 df -h 可以看到实际文件仍然存在并占用文件系统空间。 我可以使用什么命令或程序来物理删除不需要的图像?
【问题讨论】:
标签: docker
您应该能够使用 "dangling=true" 标志删除未标记的 Docker 映像:
sudo docker rmi $(sudo docker images -f "dangling=true" -q)
来源:
https://docs.docker.com/engine/reference/commandline/images/
【讨论】:
首先您需要移除已退出的容器,然后移除悬空图像。
docker rm $(docker ps -q -f status=exited)
docker rmi $(docker images -q -f dangling=true)
毕竟,我将以下脚本创建为 ~/bin/dclean 并且一直在使用它。
#!/bin/sh
processes=$(docker ps -q -f status=exited)
if [ -n "$processes" ]; then
docker rm $processes
fi
images=$(docker images -q -f dangling=true)
if [ -n "$images" ]; then
docker rmi $images
fi
【讨论】:
如果 John Petrone 解决方案不起作用,请尝试删除那些在运行 docker images 时明确引用 IMAGE ID 的图像。您可以使用一个命令将它们全部删除
for i insudo 码头工人图片 | grep \ | awk '{print $3}'; do sudo docker rmi $i; done
PD:我不知道 John Petrone 的回答。它与 Docker 1.4.1 配合得很好
【讨论】:
此命令将从 docker 中删除所有悬空的图像和容器。
docker system prune -f
【讨论】:
您可以通过图像 ID 删除单个图像...
docker images
docker rmi <image-id>
【讨论】:
此命令也有效
docker rmi $(docker images | grep "^<none>" | awk '{print $3}')
强制删除图像以放弃可能正在使用图像的已停止容器
docker rmi -f $(docker images | grep "^<none>" | awk '{print $3}')
【讨论】: