如何删除所有未关联到容器的 docker 镜像

在我们的上一篇文章中我们展示了如何修剪 docker 镜像以释放硬盘空间。但是,此方法不会删除有标签(即名称)关联的镜像。

通常你想删除不被任何容器(包括运行中已停止的容器)所需的所有镜像。

这很简单:

remove-unreferenced-docker-images.sh
docker image ls --format '{{.ID}}' | xargs docker image rm

此命令将使用 docker image ls --format '{{.ID}}' 列出所有镜像 ID,并为每个镜像 ID 运行 docker image rm

由于 docker image rm 对于关联到运行中已停止容器的镜像会失败(因此该镜像不会被删除),这只会删除未关联到任何容器的镜像。

如果你从命令输出中收到大量这样的错误消息:

docker-image-rm-errors.txt
Error response from daemon: conflict: unable to delete 1f9cfa8dc305 (cannot be forced) - image is being used by running container 22a27af7d595
Error response from daemon: conflict: unable to delete 9af515ad5c74 (must be forced) - image is being used by stopped container 2ebcbd936841

不用担心,这没关系,这只是意味着你的某个镜像关联到了容器,因此不会被删除。


Check out similar posts by category: Docker