123

I had multiple stopped containers and images on my machine.
I want to clean up and remove all containers:
docker ps -a returns nothing.
I run docker rmi $(docker images -q) to remove the cached images but I get:

Error response from daemon: conflict: unable to delete ... (must be forced) - image is referenced in multiple repositories

What repositories is this talking about?

Kevin Ghaboosi
  • 606
  • 10
  • 20
Jim
  • 3,845
  • 3
  • 22
  • 47
  • 3
    you can try to call it with force option (-f): docker rmi -f $(docker images -q) – Vicctor Nov 17 '18 at 19:15
  • 1
    Here you can find a hint for it: https://github.com/portainer/portainer/issues/497 https://github.com/moby/moby/issues/1530 it looks like if you have multiple tags on the same image docker will get back with such message. – Vicctor Nov 17 '18 at 19:26

9 Answers9

150

You cannot remove images having multiple repositories without the force modifier, see Docker docs for more info.

docker images
REPOSITORY                   TAG      IMAGE ID            CREATED           SIZE
repository/image-name        tag      a8e6fa672e89        10 days ago         344MB
repository2/image-name       tag      a8e6fa672e89        10 days ago         344MB

If you want to do it manually, instead of using the image id to remove the images, you must remove the repository/tag that you don't need using image names:

docker rmi a8e6fa672e89
Error response from daemon: conflict: unable to delete a8e6fa672e89 (must be forced) - image is referenced in multiple repositories

Remove the repository/tag you don't need:

docker rmi repository/image-name:tag
Untagged: repository/image-name:tag
Untagged: repository/image-name:tag@sha256:64b5a02e2bb3ee4d4b7c0982e8e2e5eb68bdfd0fb096fce22b6c030dafb53a33

(Repeat last step until only one repository/tag remains) And now you will be able to remove the image:

docker rmi a8e6fa672e89
Untagged: repository2/image-name:tag
Deleted: sha256:a8e6fa672e89b399bd3ac52b96c031e6816a69191d1fd7e6a1839fd643e3c751
Deleted: sha256:9861dd7b5783217515f571fdcfa6729e1e38af3ae9c971026e5a317b12fc5905

If you use the -f flag and specify the image’s short or long ID, then rmi untags and removes all images that match the specified ID.

Gabriel
  • 1,749
  • 1
  • 11
  • 15
  • This worked for me with a small twist - I had dangling images with no tag, but two repositories. I had to first `docker tag` them. – aljipa Jan 25 '23 at 20:48
29

The "repositories" it is talking about is part of the first column of a docker images:

docker images
REPOSITORY                   TAG      IMAGE ID            CREATED           SIZE
repository/image-name        tag      a8e6fa672e89        10 days ago         344MB
repository2/image-name       tag      a8e6fa672e89        10 days ago         344MB

(I take the samples which Gabriel showed in his answer)

Here we have two repositories: "repository" and "repository2". As you also can see, both images have the same IMAGE ID.

A docker images -q lists all available IMAGE ID's. Thus if you want to remove an IMAGE ID which is referenced by two images you get the error that you have mentioned.

Solution: You can remove the image by its name instead of its ID:

docker rmi repository/image-name:tag
Heri
  • 4,368
  • 1
  • 31
  • 51
  • 2
    Thank you, this helped me. I wanted to combine this with a custom filter. Using `docker images -q` returns IDs by default. Following your comment I added a `--format` argument, ending up with the following: `docker rmi $(docker image ls --filter "label=lu.ptech.bb.built-by=malbert" --format "{{.Repository}}:{{.Tag}}")` – exhuma May 17 '21 at 09:00
19

To remove a Docker image forcefully, which is referring to multiple repositories, just use the command:

sudo docker rmi -f image_id
Adrian Mole
  • 49,934
  • 160
  • 51
  • 83
hussains8
  • 634
  • 6
  • 12
6

The underlying problem is that you are trying to remove the image, but the image is tagged as Tarun Banda wrote. So don't delete the image by its id, but by its tag. That will untag the image, and then delete it.

Here an example to cleanup old containers:

docker images | grep '3 weeks ago' | awk '{print $1 ":" $2}' | xargs -n 1 docker rmi
Berend de Boer
  • 1,953
  • 20
  • 15
5

You can clean up all containers. First of all, you need to stop all containers with: docker stop $(docker ps -aq). Finally, remove all containers with: docker rm $(docker ps -aq). You can do it all in one command docker rm $(docker stop $(docker ps -aq)).

If you want to remove all containers data:

docker container prune
docker network prune
docker system prune
docker volume prune
docker builder prune
Toir
  • 177
  • 1
  • 10
3

Error response from daemon: conflict: unable to delete 3472c3b5350b (must be forced) - image is referenced in multiple repositories Error response from daemon: conflict: unable to delete 3472c3b5350b (must be forced) - image is referenced in multiple repositories

If this error is coming first untag the image and then it can be deleted. This can be done by using thee following command. docker rmi :<image_tag>

2

If you are sure you want to remove all your images, you can use this command:

docker images | awk '{print $1":"$2}' | egrep -E 'REPOSITORY|TAG' | xargs -n1 docker rmi
Liam
  • 27,717
  • 28
  • 128
  • 190
kiwo
  • 128
  • 1
  • 8
2

to delete a single record : sudo docker rmi -f <image_name>

to delete all images:
sudo docker rmi -f $(sudo docker images -a -q)

The "-f" parameter is important

  • While this code may solve the question, [including an explanation](//meta.stackexchange.com/q/114762) of how and why this solves the problem would really help to improve the quality of your post, and probably result in more up-votes. Remember that you are answering the question for readers in the future, not just the person asking now. Please [edit] your answer to add explanations and give an indication of what limitations and assumptions apply. – Yunnosch Jan 06 '21 at 09:58
-1
 docker rmi `docker images --format="{{.Repository}}:{{.Tag}}"`
Ammar Lakis
  • 79
  • 2
  • 11
  • This does not provide an answer to the question. To critique or request clarification from an author, leave a comment below their post. - [From Review](/review/low-quality-posts/28000075) – Abhinav Gupta Jan 05 '21 at 10:26
  • @AbhinavGupta it does. Delete images by repository uri and tag instead of image id, because as the error message says `image is referenced in multiple repositories`. – Ammar Lakis Aug 14 '21 at 12:46