docker rmi cannot remove images, with: no such id

Docker

Docker Problem Overview


I have a lot of images. When I try to remove them with 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

That 75ce1... hash is the same no matter which docker image I try to remove.

At present, the below gives the current docker version; however some of these images have been around since an earlier version (0.6 or so)

$ 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

Docker Solutions


Solution 1 - Docker

Put in your terminal:

docker ps -a

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

d25c0cd9725a |acd33a9490dc ................focused_einstein

You can see your IMAGEID in the column IMAGE. Get the CONTAINER ID an remove the container:

docker rm d25c0cd9725a

And now you can remove the image:

docker rmi acd33a9490dc

Solution 2 - Docker

If you need to remove several images, then you can delete all containers with

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

Now you can remove any images.

Solution 3 - Docker

I think this is the expected behavior, not a bug. This is because you have containers hanging around that have not been deleted. These containers are instances of the image, and that is preventing you from dropping that image.

Step 1 - remove unused container instances

Both jripoll's answer and Andras Hatvani's answer show ways of listing and removing the containers that are bound to the images.

Note that the latter will delete all container instances!! So, if there is one that you need to commit as a new image, you should do that first.

Step 2 - remove unnecessary images

After the containers have been deleted, you will be able to remove any images they were based on.

To quickly remove any untagged containers (ones that show up as <none> <none> when you run sudo docker images) you can run the following command:

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

I have saved that in /usr/local/bin/docker-purge-dangling so I can run it without needing to remember the command.

Solution 4 - Docker

You may also face this issue if you do not remove exited containers. You need to remove the exited container by doing this,

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

Then remove your image using

sudo docker rmi <imageID>

Solution 5 - Docker

First you need to locate the container holding the image.

To remove a single container with the image

docker ps -a

You will get such an output

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

Then remove the container using

docker rm g7aea2132441

To remove all the containers and images do

  1. Remove all the containers

    docker stop $(docker ps -a -q)
    docker rm $(docker ps -a -q)
    
  2. Remove the now dangling images

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

Solution 6 - Docker

Sincere appreciation to all of you. I have tried all your approaches, but was not able to delete the following image:

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

I had to remove it from here instead:

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

Now it is gone.

Solution 7 - Docker

Running this cleanup script I made somehow magically solves this for me:

# 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

Solution 8 - Docker

So... some cases of this seem to be because you have a no-longer-running container that references the image. Removing the container allows you to then remove the image.

But there is definitely a bug where docker gets itself into a state where no matter what you do, it can't remove any image. This has been fixed in docker 1.4.0: https://github.com/docker/docker/commit/ac40e7c

Solution 9 - Docker

this will remove all your container and then you can remove the images

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionBen CliffordView Question on Stackoverflow
Solution 1 - DockerjripollView Answer on Stackoverflow
Solution 2 - DockerAndras HatvaniView Answer on Stackoverflow
Solution 3 - DockerDamonView Answer on Stackoverflow
Solution 4 - DockerSohanView Answer on Stackoverflow
Solution 5 - DockerMutumaView Answer on Stackoverflow
Solution 6 - DockerErnest SchleicherView Answer on Stackoverflow
Solution 7 - DockerAlonLView Answer on Stackoverflow
Solution 8 - DockerDavid RöthlisbergerView Answer on Stackoverflow
Solution 9 - Dockeruser2596114View Answer on Stackoverflow