Docker remove <none> TAG images
root@server:~# docker images -a
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
<none> <none> 5e2dfc857e73 5 days ago 261.6 MB
<none> <none> d053e988f23d 5 days ago 261.6 MB
<none> <none> 1d5d4a2d89eb 5 days ago 261.6 MB
<none> <none> ea0d189fdb19 5 days ago 100.5 MB
<none> <none> 26c6175962b3 5 days ago 100.5 MB
<none> <none> 73d5cec4a0b3 5 days ago 100.5 MB
<none> <none> e19590e1bac1 5 days ago 100.5 MB
I've tried the following:
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
And the following:
docker rmi $(docker images -f "dangling=true" -q)
Get the following error:
docker: "rmi" requires a minimum of 1 argument.
See 'docker rmi --help'.
Usage: docker rmi [OPTIONS] IMAGE [IMAGE...]
Remove one or more images
Solution 1:
You can try and list only untagged images (ones with no labels, or with label with no tag):
docker images -q -a | xargs docker inspect --format='{{.Id}}{{range $rt := .RepoTags}} {{$rt}} {{end}}'|grep -v ':'
However, some of those untagged images might be needed by others.
I prefer removing only dangling images:
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
As I mentioned for for docker 1.13+ in Sept. 2016 in "How to remove old and unused Docker images", you can also do the image prune
command:
docker image prune
That being said, Janaka Bandara mentions in the comments:
This did not remove
<none>
-tagged images for me (e.g.foo/bar:<none>
); I had to usedocker images --digests
anddocker rmi foo/bar@<digest>
Janaka references "How to Remove a Signed Image with a Tag" from Paul V. Novarese:
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
pvnovarese/mprime latest 459769dbc7a1 5 days ago 4.461 MB
pvnovarese/mprime <none> 459769dbc7a1 5 days ago 4.461 MB
Diagnostic Steps
You can see the difference in these two entries if you use the
--digests=true
option (the untagged entry has the Docker Content Trust signature digest):
# docker images --digests=true
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
pvnovarese/mprime latest <none> 459769dbc7a1 5 days ago 4.461 MB
pvnovarese/mprime <none> sha256:0b315a681a6b9f14f93ab34f3c744fd547bda30a03b55263d93861671fa33b00 459769dbc7a1 5 days ago
Note that Paul also mentions moby issue 18892:
After pulling a signed image, there is an "extra" entry (with tag
<none>
) in "docker images
" output.
This makes it difficult tormi
the image (you have to force it, or else first delete the properly-tagged entry, or delete by digest.
Solution 2:
docker images | grep none | awk '{ print $3; }' | xargs docker rmi
You can try this simply
Solution 3:
docker image prune removes all dangling images (those with tag none). docker image prune -a would also remove any images that have no container that uses them.
The difference between dangling and unused images is explained in this stackoverflow thread.
Solution 4:
Just run this command:
docker image prune --filter="dangling=true"
Solution 5:
According to the docker documentation you can list only untagged (dangling) images with
$ docker images -f "dangling=true"
and redirect them to docker rmi
command like that:
$ docker rmi $(docker images -f "dangling=true" -q) --force
Notice -q
param thats only show numeric IDs of containers.