我有以下图片:

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

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


当前回答

你可以简单地在命令末尾加上——force。如:

sudo docker rmi <docker_image_id> --force

为了让它更智能,你可以添加as:

首先停止所有正在运行的容器。

Sudo docker stop $(docker ps | grep <your_container_name> | awk '{print $1}')

现在移除容器

Sudo docker rm $(docker ps | grep <your_container_name> | awk '{print $1}')

现在作为最后一步,删除docker映像

Sudo docker rmi $(docker images | grep <your_image_name> | awk '{print $3}')——force

这里的docker ps $1是第一列,即docker容器ID。

docker images $3是第三列,即docker image ID。

注意:在上述命令中使用sudo,以防您可能/可能没有执行命令的权限。如果它给你错误,尝试删除sudo。

其他回答

出现错误的原因是,即使图像没有任何标记,仍然存在在该图像上创建的容器,该容器可能处于退出状态。因此,您需要确保已经停止并删除了在这些映像上创建的所有容器。使用实例删除所有未运行的容器:

docker rm `docker ps -aq --no-trunc --filter "status=exited"`

现在这删除了所有悬空非中间<none>图像:

docker rmi `docker images --filter 'dangling=true' -q --no-trunc`

停止所有正在运行的容器: Docker stop ' Docker ps -q '

首先必须停止/删除在映像上创建的所有不必要的容器。

看看:如何删除旧Docker容器。

之后使用@marcell溶液。

删除所有未标记图像的命令的最紧凑版本是:

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

移除所有容器

docker ps -q -a | xargs docker rm

强制删除所有Docker映像

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

在Bash中:

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

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