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
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 use docker images --digests
and docker 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 to rmi
the image (you have to force it, or else first delete the properly-tagged entry, or delete by digest.