docker工人rmi不能删除图像,与:没有这样的id

我有很多图像。 当我尝试用docker rmi移除它们时

 $ sudo docker rmi acd33a9490dc Error response from daemon: No such id: 75ce1f6710bab109a7d7cbee056fa8a0c7fa913e81c88e2a55121149dda80ee9 2014/07/14 10:13:24 Error: failed to remove one or more images 

75ce1 …哈希是一样的,无论哪个docker图像我试图删除。

目前,下面给出了当前的docker版本; 然而,这些图像中的一些从早期版本(0.6左右)

 $ sudo docker version Client version: 1.0.1 Client API version: 1.12 Go version (client): go1.2.1 Git commit (client): 990021a Server version: 1.0.1 Server API version: 1.12 Go version (server): go1.2.1 Git commit (server): 990021a 

放入您的terminal:

 docker ps -a CONTAINER ID | IMAGE ......................NAMES d25c0cd9725a |acd33a9490dc ................focused_einstein 

你可以在IMAGE列中看到你的IMAGEID。 获取容器ID删除容器:

 docker rm d25c0cd9725a 

现在你可以删除图像:

 docker rmi acd33a9490dc 

如果您需要删除多个图像,则可以删除所有容器

 sudo docker ps -a -q | xargs -n 1 -I {} sudo docker rm {} 

现在你可以删除任何图像。

我认为这是预期的行为,而不是一个错误。 这是因为你有容器挂在那里还没有被删除。 这些容器是图像的实例,这是阻止你放弃该图像。

第1步 – 删除未使用的容器实例

jripoll的回答和Andras Hatvani的回答都显示了列出和移除绑定到图像的容器的方法。

请注意,后者将删除所有的容器实例! 所以,如果有一个你需要作为一个新的形象提交,你应该先做 。

第2步 – 删除不必要的图像

容器被删除后,您将能够删除他们基于的任何图像。

要快速删除任何未加标签的容器(在运行sudo docker images时显示为<none> <none> ,可以运行以下命令:

  sudo docker images -q --filter "dangling=true" | sudo xargs docker rmi 

我保存在/usr/local/bin/docker-purge-dangling所以我可以运行它而不需要记住命令。

如果不删除退出的容器,您也可能会遇到此问题。 您需要通过这样去除退出的容器,

 sudo docker ps -a | grep Exit | awk '{print $1}' | sudo xargs docker rm 

然后使用删除您的图像

 sudo docker rmi <imageID> 

首先,您需要find容纳图像的容器。

用图像去除单个容器

 docker ps -a 

你会得到这样的输出

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES g7aea2132441 2285ff53ab18 "/bin/bash" 2 days ago tombrider 

然后使用删除容器

 docker rm g7aea2132441 

删除所有的容器和图像

  1. 删除所有的容器

     docker stop $(docker ps -a -q) docker rm $(docker ps -a -q) 
  2. 删除现在悬挂的图像

     docker images -q --filter "dangling=true" | sudo xargs docker rmi 

真诚的感谢你们所有人。 我尝试了所有的方法,但无法删除以下图像:

 [myself@testvm]$ docker images -a REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest c54a2cc56cbb 6 months ago 1.848 kB 

我不得不从这里删除它:

 sudo rm /var/lib/docker/image/devicemapper/imagedb/content/sha256/c54a2cc56cbb2f04003c1cd4507e118af7c0d340fe7e2720f70976c4b75237dc 

现在它消失了。

所以…这种情况的一些情况似乎是因为你有一个没有长期运行的容器引用图像。 删除容器允许您然后删除图像。

但是,无论你做什么,docker工人进入一个状态,肯定会有一个错误,它不能删除任何图像。 这已经在docker 1.4.0中修复了: https : //github.com/docker/docker/commit/ac40e7c

运行这个清理脚本我做了一个神奇的解决这个对我来说:

 # remove orphan containers docker ps -a | grep -v ":" | awk '{print $1}' | xargs docker rm -f # remove orphan images docker images | grep "<none>" | awk '{print $3}' | xargs docker rmi -f 

这将删除所有的容器,然后你可以删除图像

sudo docker ps -a | awk'{print $ 1}'| grep -v CONTAINER | xargs sudo docker rm {} \;