我有以下图片:

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 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 rmi $(docker images -q)

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

docker rm $(docker ps -a -q)

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

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

从Docker开始。1.13.0(2017年1月)有系统剪枝命令:

$ docker system prune --help

Usage:  docker system prune [OPTIONS]

Remove unused data

Options:
-a, --all     Remove all unused images not just dangling ones
-f, --force   Do not prompt for confirmation
    --help    Print usage

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

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 '

你可以简单地在命令末尾加上——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 images --no-trunc | grep none | awk '{print $3}' | xargs docker rmi

当我删除一些正在使用的图像时,我遇到了你的问题,我没有意识到(使用docker ps -a)。