Docker错误无法删除docker容器,冲突:无法删除存储库引用

Yud*_*day 135 containers docker

我想删除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)
Run Code Online (Sandbox Code Playgroud)

我要删除列表,即"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]
Run Code Online (Sandbox Code Playgroud)

容器是否在图像中运行?

请帮忙

Yud*_*day 80

首先,删除容器名称

$ sudo docker rm backstabbing_ritchie
Run Code Online (Sandbox Code Playgroud)

结果

$ sudo docker rm backstabbing_ritchie
  backstabbing_ritchie
Run Code Online (Sandbox Code Playgroud)

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

$ sudo docker rm drunk_feynman 
  drunk_feynman
Run Code Online (Sandbox Code Playgroud)

其次,取出容器

$ sudo docker rmi training/webapp
Run Code Online (Sandbox Code Playgroud)

结果

$ 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
Run Code Online (Sandbox Code Playgroud)

检查一下

  $ 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)
Run Code Online (Sandbox Code Playgroud)

  • 如果您碰巧有很多旧容器,您也可以考虑使用docker`rm \`docker ps -aq \`来进行清理,而不是一次删除它们.更多信息[这里](http://stackoverflow.com/questions/17236796/how-to-remove-old-docker-containers?page=1&tab=active#tab-top) (6认同)

Ahm*_*any 79

docker镜像和docker容器之间存在差异.检查这个SO问题.

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

Docker ps -a               # Lists containers (and tells you which images they are spun from)
Docker images              # Lists images  
Docker rm <container_id>   # Removes a container

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
Run Code Online (Sandbox Code Playgroud)

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

在Docker 1.13中,我们重新组合了每个命令,使其位于与其交互的逻辑对象下

基本上,上面的命令也可以更清楚地重写,如:

docker container ls
docker image ls
docker container rm <container_id>
docker image rm <image_id>
Run Code Online (Sandbox Code Playgroud)

  • 我最终不得不使用`docker rmi -f id`来“强制”删除。 (6认同)

小智 29

如果要清理docker图像和容器

小心:这将冲洗所有东西

停止所有容器

docker stop $(docker ps -a -q)
Run Code Online (Sandbox Code Playgroud)

删除所有容器

docker rm $(docker ps -a -q)
Run Code Online (Sandbox Code Playgroud)

删除所有图像

docker rmi -f $(docker images -a -q)
Run Code Online (Sandbox Code Playgroud)


Sar*_*ran 27

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

sudo docker rmi -f training/webapp

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


gae*_*ael 23

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

$ docker rm $(docker ps -aq)

它将删除"ps -aq"命令中列出的所有当前docker.

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


Ahm*_*lan 12

1-Stop running container:

docker stop <container-id>
Run Code Online (Sandbox Code Playgroud)

2-Remove container

docker rm <container-id>
Run Code Online (Sandbox Code Playgroud)

3-Remove docker image

docker rmi <image-id>
Run Code Online (Sandbox Code Playgroud)


Moh*_*faa 7

列出你所有的 docker 镜像:

docker images
Run Code Online (Sandbox Code Playgroud)

列出所有存在的 docker 容器:

docker ps -a
Run Code Online (Sandbox Code Playgroud)

删除所有使用要删除的镜像的目标容器:

docker rm <container-id>
Run Code Online (Sandbox Code Playgroud)

删除目标图像:

docker rmi <image-name:image-tag or image-id>
Run Code Online (Sandbox Code Playgroud)


小智 5

注意这是一个2年的问题,但仍然希望分享我对这个特定问题的解决方法:

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

其次,用命令删除一个docker container rm <CONTAINER ID>(如果容器当前正在运行,你应该先停止它,运行docker container stop <CONTAINER ID>以优雅地停止指定的容器,如果它没有因为任何原因而停止它,或者你可以运行docker container kill <CONTAINER ID> to force shutdown of the specified container).

第三,通过运行删除容器docker container rm <CONTAINER ID>.

最后,您可以运行docker image ls -a以查看所有图像并通过运行删除您想要的图像docker image rm <hash>.