我有很多照片。当我尝试使用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
无论我尝试移除哪个docker镜像,75ce1 ... hash都是一样的。
目前,下面给出了当前的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
答案 0 :(得分:66)
放入您的终端:
docker ps -a
CONTAINER ID | IMAGE ......................NAMES
d25c0cd9725a |acd33a9490dc ................focused_einstein
您可以在IMAGE列中看到您的IMAGEID。获取CONTAINER ID并删除容器:
docker rm d25c0cd9725a
现在你可以删除图片了:
docker rmi acd33a9490dc
答案 1 :(得分:18)
如果您需要删除多个图像,则可以使用
删除所有容器sudo docker ps -a -q | xargs -n 1 -I {} sudo docker rm {}
现在您可以删除任何图片。
答案 2 :(得分:13)
我认为这是预期的行为,而不是错误。这是因为您有尚未删除的容器。这些容器是图像的实例,这会阻止您丢弃该图像。
jripoll's answer和Andras Hatvani's answer都显示了列出和删除绑定到图像的容器的方法。
请注意,后者将删除所有容器实例!! 因此,如果有一个需要提交为新图像,则应{{3} }。
删除容器后,您将能够删除所有基于的图像。
要快速删除任何未标记的容器(运行<none> <none>
时显示为sudo docker images
的容器),您可以运行以下命令:
sudo docker images -q --filter "dangling=true" | sudo xargs docker rmi
我已将其保存在/usr/local/bin/docker-purge-dangling
中,因此我可以在不需要记住命令的情况下运行它。
答案 3 :(得分:10)
如果您不删除已退出的容器,也可能会遇到此问题。 您需要通过执行此操作来删除已退出的容器,
sudo docker ps -a | grep Exit | awk '{print $1}' | sudo xargs docker rm
然后使用
删除图像sudo docker rmi <imageID>
答案 4 :(得分:10)
首先,您需要找到容纳图像的容器。
删除包含图片的单个容器
docker ps -a
你会得到这样的输出
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
g7aea2132441 2285ff53ab18 "/bin/bash" 2 days ago tombrider
然后使用
删除容器docker rm g7aea2132441
删除所有容器和图片
删除所有容器
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
删除现在悬空的图像
docker images -q --filter "dangling=true" | sudo xargs docker rmi
答案 5 :(得分:6)
真诚地感谢你们所有人。 我已经尝试了所有方法,但无法删除以下图像:
[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
现在已经不见了。
答案 6 :(得分:2)
运行这个清理脚本我以某种方式神奇地为我解决了这个问题:
# 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
答案 7 :(得分:1)
所以......有些情况似乎是因为你有一个不再运行的容器来引用图像。删除容器后,您可以删除图像。
但是肯定存在一个错误,即docker进入一个状态,无论你做什么,它都无法移除任何图像。这已在docker 1.4.0中修复:https://github.com/docker/docker/commit/ac40e7c
答案 8 :(得分:0)
这将删除所有容器,然后您可以删除图像
sudo docker ps -a | awk&#39; {print $ 1}&#39; | grep -v CONTAINER | xargs sudo docker rm {} \;