docker rmi无法删除图片,其中:没有这样的id

时间:2014-07-14 09:16:02

标签: docker

我有很多照片。当我尝试使用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

9 个答案:

答案 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)

我认为这是预期的行为,而不是错误。这是因为您有尚未删除的容器。这些容器是图像的实例,这会阻止您丢弃该图像。

步骤1 - 删除未使用的容器实例

jripoll's answerAndras Hatvani's answer都显示了列出和删除绑定到图像的容器的方法。

请注意,后者将删除所有容器实例!! 因此,如果有一个需要提交为新图像,则应{{3} }。

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

删除容器后,您将能够删除所有基于的图像。

要快速删除任何未标记的容器(运行<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

删除所有容器和图片

  1. 删除所有容器

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

    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 {} \;