我有以下图片:

alex@alexvps:~$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
<none>              <none>              70c0e19168cf        5 days ago          1.069 GB
<none>              <none>              c2ce80b62174        8 days ago          399.2 MB
<none>              <none>              60afe4036d97        8 days ago          325.1 MB

当我试图删除其中一个时,我会得到:

alex@alexvps:~$ sudo docker rmi 60afe4036d97
Error: Conflict, 60afe4036d97 wasn't deleted
2014/01/28 00:54:00 Error: failed to remove one or more images

我该如何移除它们?为什么会有这样的冲突?


当前回答

映像当前可能由正在运行的容器使用,因此首先必须停止并删除容器。

docker stop <container-name>
docker rm <container-id>

然后你可以尝试删除图片:

docker rmi <image-id>

必须确保此映像不依赖于其他映像(否则必须先删除它们)。

我有一个奇怪的情况,我没有更多的容器仍然活跃(docker ps -a返回什么),但我不能设法删除映像和它的映像依赖。

为了解决这些特殊情况,你可以强制图像删除:

docker rmi -f <image-id>

其他回答

可能的原因: 原因可能是当前正在运行的容器正在使用该映像。在这种情况下,你可以列出正在运行的容器,停止相关的容器,然后删除图像:

docker ps
docker stop <containerid>
docker rm <containerid>
docker rmi <imageid>

如果你不能通过docker ps找到容器,你可以使用它列出所有已经退出的容器并删除它们。

docker ps -a | grep 60afe4036d97
docker rm <containerid>

注意:注意不要一次性删除所有已退出的容器,以免使用仅限卷容器。它们保持在Exit状态,但包含有用的数据。

除了Sunny的回答:

为了在PowerShell窗口中删除Windows机器(使用Docker for Windows)上的所有图像,请执行以下操作:

docker images -q | %{docker rmi -f $_}

为了在PowerShell窗口中删除Windows机器(使用Docker for Windows)上的所有容器,请执行以下操作:

docker ps -a -q | %{docker rm -f $_}

映像当前可能由正在运行的容器使用,因此首先必须停止并删除容器。

docker stop <container-name>
docker rm <container-id>

然后你可以尝试删除图片:

docker rmi <image-id>

必须确保此映像不依赖于其他映像(否则必须先删除它们)。

我有一个奇怪的情况,我没有更多的容器仍然活跃(docker ps -a返回什么),但我不能设法删除映像和它的映像依赖。

为了解决这些特殊情况,你可以强制图像删除:

docker rmi -f <image-id>

要删除所有图像,请使用给定的命令

docker rmi $(docker images -q)

要删除所有容器,请使用给定的命令

docker rm $(docker ps -a -q)

警告:这将破坏你所有的图像和容器。这是不可能恢复的!

该解决方案由Techoverflow.net提供。

在Bash中:

for i in `sudo docker images|grep \<none\>|awk '{print $3}'`;do sudo docker rmi $i;done

这将删除所有名称为“<none>”的图像。我发现那些图片是多余的。