即使没有容器在运行也无法删除图像

时间:2018-11-17 19:01:59

标签: macos docker docker-container docker-image

我的机器中有多个停止的容器和图像。
我想清理并移除所有容器:
docker ps -a不返回任何内容。
我运行docker rmi $(docker images -q)删除缓存的图像,但得到:

  

守护程序的错误响应:冲突:无法删除...   (必须强制使用)-在多个存储库中引用了图像

它在说什么仓库?

8 个答案:

答案 0 :(得分:5)

如果没有force修改器,则无法删除具有多个存储库的图像,有关更多信息,请参阅Docker docs

docker images
REPOSITORY                   TAG      IMAGE ID            CREATED           SIZE
repository/image-name        tag      a8e6fa672e89        10 days ago         344MB
repository2/image-name       tag      a8e6fa672e89        10 days ago         344MB

如果要手动执行操作,则必须使用图像名称来删除不需要的存储库/标签,而不是使用图像ID来删除图像:

docker rmi a8e6fa672e89
Error response from daemon: conflict: unable to delete a8e6fa672e89 (must be forced) - image is referenced in multiple repositories

删除不需要的存储库/标签:

docker rmi repository/image-name:tag
Untagged: repository/image-name:tag
Untagged: repository/image-name:tag@sha256:64b5a02e2bb3ee4d4b7c0982e8e2e5eb68bdfd0fb096fce22b6c030dafb53a33

(重复最后一步,直到只剩下一个存储库/标签),现在您将能够删除图像:

docker rmi a8e6fa672e89
Untagged: repository2/image-name:tag
Deleted: sha256:a8e6fa672e89b399bd3ac52b96c031e6816a69191d1fd7e6a1839fd643e3c751
Deleted: sha256:9861dd7b5783217515f571fdcfa6729e1e38af3ae9c971026e5a317b12fc5905

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

答案 1 :(得分:5)

它所谈论的“存储库”是docker images第一栏中的一部分:

docker images
REPOSITORY                   TAG      IMAGE ID            CREATED           SIZE
repository/image-name        tag      a8e6fa672e89        10 days ago         344MB
repository2/image-name       tag      a8e6fa672e89        10 days ago         344MB

(我接受加百列在回答中显示的样本)

在这里,我们有两个存储库:“ repository”和“ repository2”。如您所见,这两个图像具有相同的IMAGE ID。

docker images -q列出了所有可用的IMAGE ID。因此,如果要删除由两个图像引用的IMAGE ID,则会得到您提到的错误。

解决方案:您可以按图像名称而不是其ID删除图像:

docker rmi repository/image-name:tag

答案 2 :(得分:1)

如果确定要删除所有图像,则可以使用以下命令:

docker images | awk '{print $1":"$2}' | egrep -E 'REPOSITORY|TAG' | xargs -n1 docker rmi

答案 3 :(得分:1)

您可以清理所有容器。首先,您需要使用docker stop $(docker ps -aq)停止所有容器。最后,使用以下命令删除所有容器:docker rm $(docker ps -aq)。您可以在一个命令docker rm $(docker stop $(docker ps -aq))中完成所有操作。

如果要删除所有容器数据:

docker container prune
docker network prune
docker system prune
docker volume prune
docker builder prune

答案 4 :(得分:1)

删除单个记录:sudo docker rmi -f

删除所有图片:
须藤泊坞窗 rmi -f $(须藤泊坞窗图像 -a -q)

“-f”参数很重要

答案 5 :(得分:1)

要强制删除一个 Docker 镜像,它指的是多个存储库,只需使用以下命令:

sudo docker rmi -f image_id

答案 6 :(得分:0)

来自守护进程的错误响应:冲突:无法删除 3472c3b5350b(必须强制) - 图像在多个存储库中被引用 来自守护进程的错误响应:冲突:无法删除 3472c3b5350b(必须强制) - 图像在多个存储库中被引用

如果出现此错误,请先取消标记图像,然后将其删除。 这可以通过使用以下命令来完成。 码头工人 rmi :

答案 7 :(得分:-1)

0, 1