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

Ben*_*ord 60 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
Run Code Online (Sandbox Code Playgroud)

无论我试图删除哪个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
Run Code Online (Sandbox Code Playgroud)

jri*_*oll 67

放入您的终端:

docker ps -a

CONTAINER ID | IMAGE ......................NAMES

d25c0cd9725a |acd33a9490dc ................focused_einstein
Run Code Online (Sandbox Code Playgroud)

您可以在IMAGE列中看到您的IMAGEID.获取CONTAINER ID并删除容器:

docker rm d25c0cd9725a
Run Code Online (Sandbox Code Playgroud)

现在你可以删除图像:

docker rmi acd33a9490dc
Run Code Online (Sandbox Code Playgroud)

  • 如果你想删除*all*,这是一个很好的捷径:`docker rm -f $(docker ps -aq)` (8认同)
  • 因此,类似地,您可以使用docker rmi -f $(docker images -q)删除所有图像(在删除了它们对应的容器之后) (2认同)

And*_*ani 18

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

sudo docker ps -a -q | xargs -n 1 -I {} sudo docker rm {}
Run Code Online (Sandbox Code Playgroud)

现在您可以删除任何图像.


Dam*_*mon 13

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

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

无论jripoll的回答安德拉斯Hatvani的回答显示上市和删除绑定到图像容器的方式.

请注意,后者将删除所有容器实例!! 所以,如果你需要提交一个新图像,你应该先做.

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

删除容器后,您将能够删除它们所基于的任何图像.

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

    sudo docker images -q --filter "dangling=true" | sudo xargs docker rmi
Run Code Online (Sandbox Code Playgroud)

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


Soh*_*han 10

如果不删除已退出的容器,也可能会遇到此问题.你需要通过这样做删除退出的容器,

sudo docker ps -a | grep Exit | awk '{print $1}' | sudo xargs docker rm 
Run Code Online (Sandbox Code Playgroud)

然后使用删除您的图像

sudo docker rmi <imageID>
Run Code Online (Sandbox Code Playgroud)


Mut*_*uma 10

首先,您需要找到容纳图像的容器.

使用图像删除单个容器

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

你会得到这样的输出

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
g7aea2132441        2285ff53ab18        "/bin/bash"         2 days ago                                                  tombrider 
Run Code Online (Sandbox Code Playgroud)

然后使用删除容器

docker rm g7aea2132441
Run Code Online (Sandbox Code Playgroud)

删除所有容器和图像

  1. 删除所有容器

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

    docker images -q --filter "dangling=true" | sudo xargs docker rmi
    
    Run Code Online (Sandbox Code Playgroud)


小智 8

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

[myself@testvm]$ docker images -a
REPOSITORY    TAG     IMAGE ID      CREATED       SIZE
hello-world   latest  c54a2cc56cbb  6 months ago  1.848 kB
Run Code Online (Sandbox Code Playgroud)

我不得不从这里删除它:

sudo rm /var/lib/docker/image/devicemapper/imagedb/content/sha256/c54a2cc56cbb2f04003c1cd4507e118af7c0d340fe7e2720f70976c4b75237dc 
Run Code Online (Sandbox Code Playgroud)

现在它消失了.