如何物理删除未标记的Docker图像

qlfbtfca  于 2022-12-26  发布在  Docker
关注(0)|答案(7)|浏览(115)

当我运行诸如sudo docker rmi me/myimage这样的命令时,我得到了响应...未标记的图像,但是,当我重新运行sudo docker images时,我可以看到这个“未标记”的图像仍然存在,并且,如果我运行df -h,我可以看到实际的文件仍然存在并且占用了文件系统空间。我可以使用什么命令或过程来物理地删除不需要的图像?

6ss1mwsb

6ss1mwsb1#

您应该能够使用"dangling=true"标志删除未标记的Docker图像:

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

资料来源:
https://docs.docker.com/engine/reference/commandline/images/

ar5n3qh5

ar5n3qh52#

首先,您需要删除已退出的容器,然后删除悬空图像。

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
xkftehaa

xkftehaa3#

如果JohnPetrone解决方案不起作用,请尝试删除运行docker images时明确引用IMAGE ID的映像。
for i in sudo docker图像|grep |awk“{打印$3}”; do sudo docker rmi $i; done
PD:我不知道John Petrone的答案。它与Docker 1.4.1配合得很好

ahy6op9u

ahy6op9u4#

此命令将从docker中删除所有悬挂的图像和容器。

docker system prune -f
jdgnovmf

jdgnovmf5#

你可以删除单个图像通过他们的图像id ...

docker images
docker rmi <image-id>
tyg4sfes

tyg4sfes6#

此命令也有效

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

强制删除映像以放弃可能正在使用映像的已停止容器

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

gg0vcinb7#

在我的例子中,我已经通过下面的命令删除了未标记的图像

# find untagged images 
        IMAGE_IDS=$(sudo docker images | grep "^<none>" | awk '{print $"3"}')
        # in case of no untagged images found do nothing
        if [ -n "$IMAGE_IDS" ]; then
                sudo docker rmi $IMAGE_IDS > /dev/null 2>&1
        fi

相关问题