图片已由停止的容器使用

时间:2018-07-05 10:11:14

标签: docker docker-container

我正在尝试通过以下命令删除Docker容器:

docker rmi <Image-Id>

很明显,我已将Image-Id替换为使用的ID:

docker images

但是我看到以下错误:

Error response from daemon: conflict: unable to delete <Image-ID> (must be forced) - image is being used by stopped container xxxxxxxxxxx

9 个答案:

答案 0 :(得分:26)

您还可以使用--force , -f强制删除图像

  

如果您使用-f标志并指定图像的短ID或长ID,则   此命令取消标记并删除所有与指定图像匹配的图像   ID。

  docker rmi -f <image_id> 

答案 1 :(得分:23)

您必须先删除容器。
强制是最后采取的方法。

#check container
docker ps -a

#remove container
docker rm containerID

答案 2 :(得分:12)

您需要使用docker rm删除已停止的容器,然后才能使用docker rmi删除其使用的图像。

答案 3 :(得分:4)

如果docker rmi <image-id>不起作用,请尝试以下操作:

停止所有正在运行的容器

docker stop $(docker ps -aq)

删除所有容器

docker rm $(docker ps -aq)

删除所有图像

docker rmi $(docker images -q)

答案 4 :(得分:3)

除了其他答案,我在使用Mac的Docker时遇到了同样的问题,但是docker ps -a没有显示任何正在运行的容器。运行docker images显示:

docker/desktop-storage-provisioner   v1.0                605a0f683b7b        2 months ago        33.1MB
k8s.gcr.io/kube-controller-manager   v1.15.5             1399a72fa1a9        6 months ago        159MB
k8s.gcr.io/kube-proxy                v1.15.5             cbd7f21fec99        6 months ago        82.4MB
k8s.gcr.io/kube-apiserver            v1.15.5             e534b1952a0d        6 months ago        207MB
k8s.gcr.io/kube-scheduler            v1.15.5             fab2dded59dd        6 months ago        81.1MB
docker/kube-compose-controller       v0.4.23             a8c3d87a58e7        11 months ago       35.3MB
docker/kube-compose-api-server       v0.4.23             f3591b2cb223        11 months ago       49.9MB
k8s.gcr.io/coredns                   1.3.1               eb516548c180        16 months ago       40.3MB
k8s.gcr.io/etcd                      3.3.10              2c4adeb21b4f        17 months ago       258MB
k8s.gcr.io/pause                     3.1                 da86e6ba6ca1        2 years ago         742kB

如果您已启用Kubernetes,则所有这些图像都将由Docker应用程序使用。在Docker for Mac首选项中,有一个关于Kubernetes的部分。如果您单击“显示系统容器(高级)”,它们将显示在docker ps中。

如果要删除这些图像,则需要通过Docker for Mac应用程序禁用Kubernetes,然后重试。

答案 5 :(得分:1)

您可能还会发现您已停止引起锁定的容器。首先使用以下命令将其删除:

docker rm  $(docker ps -q -a)

在这里,我们仅通过ID列出docker进程,然后将其删除;但是,docker rm只会删除停止的容器。

下一步返回并使用以下图像删除图像:

docker image rm <image_id>

答案 6 :(得分:1)

如果目标是回收磁盘空间,则尚未提及的另一种方法是使用docker system prune。它将显示警告,应引起注意:

WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all dangling images
  - all dangling build cache

这不会删除命名的图像,但是会清除中间的未命名图像。根据您使用的容器的大小,这可以节省大量的磁盘空间。

答案 7 :(得分:0)

如果您在docker-compose中进行了更改,并且使用的是docker compose,则可以使用--build选项通过运行{{1}}来重建映像!

答案 8 :(得分:0)

Docker容器在docker映像之上运行,只有在未将映像附加到任何容器时,您才能删除该映像。因此,您必须停止容器并删除容器,然后才能删除图像ID。

docker stop container-id和 docker rm容器ID

然后尝试删除图像 docker rmi图片ID

下面的链接中提供了一些额外的信息。干杯!!

https://docs.docker.com/config/pruning/