由于冲突,无法删除一些未标记的 docker 图像

Unable to delete some untagged docker images due to conflict

我无法明确删除一些未标记的 docker 图片。具体来说,带有标签 <none>.

的那些

如果我 运行 docker images -a 我得到这样的结果:

<none>              <none>              91e54dfb1179        3 months ago        188.3 MB
<none>              <none>              d74508fb6632        3 months ago        188.3 MB
<none>              <none>              c22013c84729        3 months ago        188.3 MB
<none>              <none>              d3a1f33e8a5a        3 months ago        188.1 MB
<none>              <none>              4a5e6db8c069        3 months ago        125.1 MB
<none>              <none>              2c49f83e0b13        3 months ago 

但是,当我输入 docker rmi -f 2c49f83e0b13 时,我得到:

Error response from daemon: Conflict, 2c49f83e0b13wasn't deleted
Error: failed to remove images: [2c49f83e0b13]

知道可能是什么问题吗?

这些可能是我实际使用的某些图片的中间 docker 图片。但如果是这样的话,那么完成的 docker 图像应该已经有那些先前的图像,我并不明确需要那些中间图像在那里。

确保图像实际上是 悬垂(意味着它没有被任何其他图像引用,或者不是图像的父图像)

docker images --filter "dangling=true" -q --no-trunc

如果它是悬空的(并且应该被删除),那么有几个待处理的错误报告无法删除此类图像:issue 13625, issue 12487

在移除镜像之前应该先停止容器:

docker rm $(docker ps -a -q)

来源:https://github.com/docker/docker/pull/6112

我也遇到过,重启 docker 引擎和所有使用该镜像的容器即可解决问题。