我正在尝试通过以下命令删除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
答案 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
下面的链接中提供了一些额外的信息。干杯!!