停止的容器正在使用图像

image is being used by stopped container

我正在尝试通过此命令删除 docker 容器:

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删除它使用的镜像。

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

If you use the -f flag and specify the image’s short or long ID, then this command untags and removes all images that match the specified ID.

  docker rmi -f <image_id> 

注意:此命令会删除容器正在使用的图像。

如果您在 Dockerfile 中进行了更改并且您正在使用 docker 撰写,则可以通过 运行 docker-compose--build 选项 !

您可能还会发现您已经停止了导致锁定的容器。首先使用以下方法删除这些:

docker rm  $(docker ps -q -a)

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

接下来返回并使用以下方法删除图像:

docker image rm <image_id>

Docker 个容器 运行 在 docker 个图像之上,您只能删除未附加到任何容器的图像。!所以你必须停止容器并删除容器然后你可以删除图像 ID。

docker 停止容器 ID 和 docker rm 容器 ID

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

下面给出了一些额外的信息 link。干杯!

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

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

#check container
docker ps -a

#remove container
docker rm containerID

除了其他答案外,我对 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 部分。如果您单击 "Show system containers (advanced)",它们将出现在 docker ps

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

如果 docker rmi <image-id> 不起作用,试试这个:

停止所有 运行 个容器

docker stop $(docker ps -aq)

删除所有容器

docker rm $(docker ps -aq)

删除所有图片

docker rmi $(docker images -q)

如果目标是回收磁盘 space,另一种尚未提及的方法是使用 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

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