【问题标题】:Can not remove images even though no container is running即使没有容器正在运行,也无法删除图像
【发布时间】:2019-04-20 15:01:15
【问题描述】:

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

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

它在谈论什么存储库?

【问题讨论】:

标签: macos docker docker-container docker-image


【解决方案1】:

如果没有 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 匹配的所有图像。

【讨论】:

    【解决方案2】:

    它所说的“存储库”是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
    

    (我拿了 Gabriel 在他的回答中展示的样本)

    这里有两个存储库:“repository”和“repository2”。您还可以看到,两个图像具有相同的 IMAGE ID。

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

    解决方案:您可以通过图像名称而不是 ID 来删除图像:

    docker rmi repository/image-name:tag
    

    【讨论】:

    • 谢谢,这对我有帮助。我想将它与自定义过滤器结合起来。默认情况下,使用 docker images -q 返回 ID。根据您的评论,我添加了一个 --format 参数,最终得到以下内容:docker rmi $(docker image ls --filter "label=lu.ptech.bb.built-by=malbert" --format "{{.Repository}}:{{.Tag}}")
    【解决方案3】:

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

    sudo docker rmi -f image_id
    

    【讨论】:

      【解决方案4】:

      您可以清理所有容器。首先,您需要停止所有容器: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
      

      【讨论】:

        【解决方案5】:

        根本问题是您试图删除图像,但图像被标记为 Tarun Banda 所写。所以不要通过它的 id 删除图像,而是通过它的标签。这将取消标记图像,然后将其删除。

        这里是清理旧容器的示例:

        docker images | grep '3 weeks ago' | awk '{print $1 ":" $2}' | xargs -n 1 docker rmi
        

        【讨论】:

          【解决方案6】:

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

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

          【讨论】:

            【解决方案7】:

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

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

            【讨论】:

            • 请为您的问题添加标签并详细说明您使用的语言
            【解决方案8】:

            删除一条记录:sudo docker rmi -f

            删除所有图像:
            sudo docker rmi -f $(sudo docker images -a -q)

            “-f”参数很重要

            【讨论】:

            • 虽然此代码可能会解决问题,including an explanation 关于如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。
            【解决方案9】:
             docker rmi `docker images --format="{{.Repository}}:{{.Tag}}"`
            

            【讨论】:

            • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
            • @AbhinavGupta 确实如此。通过存储库 uri 和标签而不是图像 id 删除图像,因为错误消息显示 image is referenced in multiple repositories
            猜你喜欢
            • 2019-10-04
            • 1970-01-01
            • 2018-10-03
            • 2019-10-21
            • 1970-01-01
            • 1970-01-01
            • 2015-03-18
            • 1970-01-01
            • 2021-03-18
            相关资源
            最近更新 更多