docker rmi cannot remove images, with: no such id
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
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
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.
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.