【问题标题】:Docker error cannot delete docker container, conflict: unable to remove repository referenceDocker 错误无法删除 docker 容器,冲突:无法删除存储库引用
【发布时间】:2016-02-27 17:32:46
【问题描述】:

我想在Docker删除容器,但是想删除时出错

我在移除容器之前的下一步,查看现有容器的列表

sts@Yudi:~/docker$ sudo docker ps -as

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES                  SIZE
78479ffeba5c        ubuntu              "/bin/bash"         42 hours ago        Exited (0) 42 hours ago                       sharp_wescoff          81 B (virtual 187.7 MB)
0bd2b54678c7        training/webapp     "python app.py"     5 days ago          Exited (0) 5 days ago                         backstabbing_ritchie   0 B (virtual 323.7 MB)
0adbc74a3803        training/webapp     "python app.py"     5 days ago          Exited (143) 5 days ago                       drunk_feynman          0 B (virtual 323.7 MB)

一个我要删除的列表,即"training/webapp" 但是发生了错误

sts@Yudi:~/docker$ sudo docker rmi training/webapp
Error response from daemon: conflict: unable to remove repository reference "training/webapp" (must force) - container 0bd2b54678c7 is using its referenced image 54bb4e8718e8
Error: failed to remove images: [training/webapp]

容器是否在镜像中运行?

请帮忙

【问题讨论】:

    标签: docker containers


    【解决方案1】:

    您可以使用-f 选项强制删除容器。

    sudo docker rmi -f training/webapp

    您可以在删除之前使用sudo docker stop training/webapp 停止容器

    【讨论】:

    • 我已经尝试过了,通过停止容器 $ sudo docker stop training/webapp 来自守护进程的错误响应:没有这样的 id:training/webapp 错误:无法停止容器:[training/webapp]跨度>
    • 您可以尝试停止使用容器 ID sudo docker stop 0bd2b54678c7
    【解决方案2】:

    首先,删除容器名称

    $ sudo docker rm backstabbing_ritchie
    

    结果

    $ sudo docker rm backstabbing_ritchie
      backstabbing_ritchie
    

    删除第二部分,列在要删除的容器上

    $ sudo docker rm drunk_feynman 
      drunk_feynman
    

    二、移除容器

    $ sudo docker rmi training/webapp
    

    结果

    $ sudo docker rmi training/webapp  
      Untagged: training/webapp:latest
      Deleted: 54bb4e8718e8600d78a5d7c62208c2f13c8caf0e4fe73d2bc0e474e93659c0b5
      Deleted: f74dd040041eb4c032d3025fe38ea85de8075992bdce6789b694a44b20feb8de
      Deleted: 7cbae69141977b99c44dc6957b032ad50c1379124d62b7d7d05ab7329b42348e
      Deleted: abb991a4ed5e4cde2d9964aec4cccbe0015ba9cc9838b696e7a32e1ddf4a49bd
      Deleted: 1952e3bf3d7e8e6a9b1e23bd4142e3c42ff7f4b7925122189704323593fd54ac
      Deleted: f95ebd363bf27a7546deced7a41a4099334e37a3d2901fa3817e62bb1ade183f
      Deleted: 20dd0c75901396d41a7b64d551ff04952084cc3947e66c67bae35759c80da338
      Deleted: 2505b734adda3720799dde5004302f5edb3f2a2ff71438f6488b530b728ba666
      Deleted: 2ee0b8f351f753f78f1178000ae37616eb5bf241d4ef041b612d58e1fd2aefdc
      Deleted: 2ce633e3e9c9bd9e8fe7ade5984d7656ec3fc3994f05a97d5490190ef95bce8d
      Deleted: 98b15185dba7f85308eb0e21196956bba653cf142b36dc08059b3468a01bf35d
      Deleted: 515565c29c940355ec886c992231c6019a6cffa17ff1d2abdfc844867c9080c5
      Deleted: 2880a3395eded9b748c94d27767e1e202f8d7cb06f1e40e18d1b1c77687aef77
    

    检查容器

      $ sudo docker ps -as
      CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES                  SIZE
      78479ffeba5c        ubuntu              "/bin/bash"         43 hours ago        Exited (0) 43 hours ago                       sharp_wescoff          81 B (virtual 187.7 MB)
    

    【讨论】:

    • 如果您碰巧有很多旧容器,您也可以考虑使用 docker rm `docker ps -aq` 进行清理,而不是一次删除一个。更多信息here
    • 为什么要先删除名字再删除图片?为什么尝试删除图像而不先删除名称会成为一个问题?
    • @code_dredd 没有“删除名称”之类的东西。它是在删除图像之前必须首先删除的容器。更多详情stackoverflow.com/a/40283776/1998422
    【解决方案3】:

    如果您启动了多个 docker 容器,请使用此

    $ docker rm $(docker ps -aq)

    它将删除“ps -aq”命令中列出的所有当前 docker。

    来源:aaam https://github.com/docker/docker/issues/12487

    【讨论】:

    • 这对我有用。运行此命令后,我将运行 docker image ls,然后运行 ​​docker image rm X,其中每个 X 都是从 ls 输出中获取的。
    【解决方案4】:

    docker 镜像和 docker 容器之间是有区别的。检查这个SO Question

    简而言之,容器是图像的可运行实例。这就是为什么如果该映像中有正在运行的容器,则无法删除该映像。 您只需要先删除容器即可。

    docker ps -a                # Lists containers (and tells you which images they are spun from)
    
    docker images               # Lists images 
    
    docker rm <container_id>    # Removes a stopped container
    
    docker rm -f <container_id> # Forces the removal of a running container (uses SIGKILL)
    
    docker rmi <image_id>       # Removes an image 
                                # Will fail if there is a running instance of that image i.e. container
    
    docker rmi -f <image_id>    # Forces removal of image even if it is referenced in multiple repositories, 
                                # i.e. same image id given multiple names/tags 
                                # Will still fail if there is a docker container referencing image
    

    Docker 1.13+ 更新 [自 2017 年 1 月起]

    在 Docker 1.13 中,我们将每个命令重新组合到与之交互的逻辑对象下

    基本上,上面的命令也可以改写为:

    docker container ls -a
    docker image ls
    docker container rm <container_id>
    docker image rm <image_id>
    

    另外,如果你想删除EVERYTHING,你可以使用:

    docker system prune -a
    

    警告!这将删除:

    • 所有停止的容器
    • 至少一个容器未使用的所有网络
    • 所有未使用的图片
    • 所有构建缓存

    【讨论】:

    • 我最终不得不使用docker rmi -f id 来“强制”删除。
    • @WernerCD -f 在您想要删除在多个存储库中引用的图像时提供帮助,这是无法删除图像的另一个常见原因。
    • 值得注意的是docker container ls 只列出了正在运行的容器。这让我很困惑,直到我意识到添加 -a 标志会列出所有这些。
    • @MahdiAmrollahi 您可以随时使用docker rm &lt;container_id&gt; 删除停止的容器。如果容器仍在运行,请先将其停止,或使用 docker rm -f &lt;container_id&gt; 强制删除
    • 现在我想起来了,“运行实例”这个词不是很准确,因为容器有自己的生命周期(即可以启动/停止)。我将使用术语“可运行实例”来代替。
    【解决方案5】:

    注意到这是一个已有 2 年历史的问题,但仍想分享我针对这个特定问题的解决方法:

    首先,运行docker container ls -a 列出您拥有的所有容器并确定您想要删除的内容。

    其次,用命令docker container rm &lt;CONTAINER ID&gt;删除那个(如果容器当前正在运行,你应该先停止它,运行docker container stop &lt;CONTAINER ID&gt;优雅地停止指定的容器,如果它没有停止它无论什么原因,或者你可以运行docker container kill &lt;CONTAINER ID&gt; to force shutdown of the specified container)。

    第三,通过运行docker container rm &lt;CONTAINER ID&gt; 删除容器。

    最后,您可以运行docker image ls -a 来查看所有图像并通过运行docker image rm &lt;hash&gt; 删除您想要的图像。

    【讨论】:

      【解决方案6】:

      如果你想清理 docker 镜像和容器

      注意:这会刷新所有内容

      停止所有容器

      docker stop $(docker ps -a -q)
      

      删除所有容器

      docker rm $(docker ps -a -q)
      

      删除所有图片

      docker rmi -f $(docker images -a -q)
      

      【讨论】:

      • 那行得通。此外,如果您停止容器,您仍会在列表中看到它。因此,您必须使用docker rm $(docker ps -a -q) 将其删除。谢谢!
      【解决方案7】:

      移除 docker 镜像 >

      列出所有容器

      docker container ls
      

      列出所有图片

      docker image ls
      

      通过容器 id 停止容器

      docker container stop <container_id>
      

      通过容器 id 移除容器

      docker container rm <container_id>
      

      如果不想停止和删除,可以强制删除

      docker container rm -f <container_id>
      

      删除图片

      docker image rm <image_id>
      

      完成!

      【讨论】:

        【解决方案8】:

        仅删除与特定图像关联的容器

        docker ps -a | grep training/webapp | cut -d ' ' -f 1 | xargs docker rm
        
        • ps -a:列出所有容器
        • grep training/webapp :过滤掉除从 training/webapp 映像启动的容器以外的所有内容
        • cut -d ' ' -f 1:仅列出容器 ids(第一个字段用空格分隔)
        • xargs docker rm : 将容器 id 列表输出发送到 docker rm 命令以移除容器

        【讨论】:

          【解决方案9】:

          列出你所有的 docker 镜像:

          docker images
          

          列出所有已存在的 docker 容器:

          docker ps -a
          

          删除所有目标容器,这些容器正在使用您要删除的图像:

          docker rm <container-id>
          

          删除目标图片:

          docker rmi <image-name:image-tag or image-id>
          

          【讨论】:

            【解决方案10】:

            在 docker 中删除“找不到网络”

            检查我们无法删除的网络

            docker network inspect [<id> or <name>]
            

            断开网络

            docker network disconnect -f [<networkID> or <networkName>] [<endpointName> or <endpointId>]
            

            删除未使用的网络

            docker network prune
            

            【讨论】:

              【解决方案11】:

              1-停止运行容器:

              docker stop <container-id>
              

              2-移除容器

              docker rm <container-id>
              

              3-删除泊坞窗图像

              docker rmi <image-id>
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2021-10-23
                • 1970-01-01
                • 2022-08-03
                • 2020-11-14
                • 2018-10-09
                • 2014-11-21
                • 1970-01-01
                相关资源
                最近更新 更多