Docker remove <none> TAG images
Just run this command:
docker image prune --filter="dangling=true"
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.
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.
docker images -a | grep none | awk '{ print $3; }' | xargs docker rmi
You can try this simply