我有以下图片:

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

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


当前回答

在Bash中:

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

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

其他回答

我已经找到了一个解决方案与Powershell脚本,这将为我。

该脚本首先停止所有容器,然后删除所有容器,然后删除由用户命名的图像。

看这里http://www.devcode4.com/article/powershell-remove-docker-containers-and-images

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

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

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

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

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

移除所有容器

docker ps -q -a | xargs docker rm

强制删除所有Docker映像

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

Use

docker image prune -all

or

docker image prune -a

删除所有悬挂的图像。如果指定了-a,它也会删除所有未被任何容器引用的图像。

注意:在删除任何内容之前,会提示您进行确认,但不会显示将要删除的内容的列表。此外,docker image ls不支持负过滤,因此很难预测哪些图像将被实际删除。

正如Docker的文档所述。

要删除一些Docker镜像,必须执行以下命令:

$ docker rmi <docker_image_id>

因此,要删除所有Docker映像,可以执行以下命令:

$ docker rmi $(docker images -q)

现在,如果你想删除所有的Docker映像(包括正在使用的映像),你可以添加标记-f,例如:

$ docker rmi -f $(docker images -q)