我试图通过以下命令删除一个码头容器:
docker rmi <Image-Id>
显然,我已经用我使用的 Id 替换了 Image-Id:
docker images
但我看到了下面的错误:
Error response from daemon: conflict: unable to delete <Image-ID> (must be forced) - image is being used by stopped container xxxxxxxxxxx
您需要用 docker rm删除停止的容器,然后您可以删除它用于 docker rmi的图像。
docker rm
docker rmi
也可以使用 --force , -f强制删除图像
--force , -f
如果使用-f 标志并指定图像的短 ID 或长 ID,则 此命令取消标记并删除与指定的 身份证。
docker rmi -f <image_id>
注意: 此命令将删除容器正在使用的映像。
如果您已经改变了在 Dockerfile和如果您正在使用多克合成,您可以只是重建您的形象运行 docker-compose与 --build选项!
Dockerfile
docker-compose
--build
您还可能发现您已经停止了导致锁定的容器。请首先使用以下方法移除这些容器:
docker rm $(docker ps -q -a)
在这里,我们仅仅通过 ID 来列出 docker 进程,然后删除它们; 但是,docker rm 只会删除已停止的容器。
下一步,返回并删除图像使用:
docker image rm <image_id>
多克容器运行在多克图像之上,只有当一个图像没有附加到任何容器时才能删除它。!所以你必须停止容器和删除容器,然后你可以删除图像 ID。
码头停止容器-标识和 码头集装箱标识码头集装箱标识码
然后尝试删除图像 Docker rmi image-id
一些额外的信息给予在下面的链接。干杯!
Https://docs.docker.com/config/pruning/
您必须先移除容器。 强迫是最后一种方法。
#check container docker ps -a #remove container docker rm containerID
除了其他答案之外,我在使用 Docker for Mac 时遇到了同样的问题,但是 docker ps -a没有显示任何正在运行的容器。运行 docker images显示:
docker ps -a
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 ps
如果您希望删除这些图像,您需要通过 Docker for Mac 应用程序禁用 Kubernetes,然后再试一次。
如果 docker rmi <image-id>不起作用,试试这个:
docker rmi <image-id>
停止所有正在运行的容器
docker stop $(docker ps -aq)
移走所有容器
docker rm $(docker ps -aq)
删除所有图像
docker rmi $(docker images -q)
如果目标是回收磁盘空间,另一种尚未提及的方法是使用 docker system prune。它将打印一个应该注意的警告:
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
这不会删除已命名的图像,但会清除中间未命名的图像。根据所使用容器的大小,这可以节省大量的磁盘空间。
如果通过传递—— name 创建了 docker 映像,则可以运行以下命令来删除容器
按名称运行 Docker 容器的示例
/usr/bin/docker run --restart=always --name=dynamodb_docker -p=8000:8000 -v amazon/dynamodb-local docker stop /dynamodb_docker docker rm /dynamodb_docker
因此,正确的格式可以删除下列码头容器:
docker stop /<CONTAINER NAME> docker rm /<CONTAINER NAME>