删除虚悬镜像
列出REPOSITORY
和TAG
均为<none>
的虚悬镜像:
$ docker images --filter dangling=true
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> a55788f7b617 16 minutes ago 167MB
<none> <none> 2b5196aa06e0 22 minutes ago 677MB
<none> <none> 41abb532c35e 20 hours ago 677MB
<none> <none> 7ea74ab89838 23 hours ago 677MB
<none> <none> b1bd11ec8f78 24 hours ago 135MB
<none> <none> 7764b9256a1d 27 hours ago 674MB
删除所有虚悬镜像
docker rmi $(docker images --filter dangling=true -q)
也可以使用 docker image prune
命令,具体可参考 这里 。
docker image prune
命令还支持删除部分虚悬镜像:
如 docker image prune -f --filter until=24h
会删除24小时前的虚悬镜像,-a
标签还支持删除所有未使用的镜像。
批量删除指定镜像
自动构建过程中通常会伴随镜像的生成,若没有及时清理,会造成存在大量REPOSITORY
一样而TAG
不一样的镜像。通常这些镜像是不会使用的(仅会使用latest镜像)。
列出latest镜像之前的所有镜像:
$ docker images aka-gm --filter before=aka-gm:latest
REPOSITORY TAG IMAGE ID CREATED SIZE
aka-gm 20221101_160758 ce8386df2d69 19 hours ago 183MB
aka-gm 20221031_172612 47575e94c770 42 hours ago 183MB
aka-gm 20221101_144456 47575e94c770 42 hours ago 183MB
aka-gm 20221031_151951 26f8429ac4a5 44 hours ago 183MB
aka-gm 20221031_104111 cc658c3c2216 2 days ago 183MB
aka-gm 20221028_184209 2a144383dd86 4 days ago 183MB
aka-gm 20221027_145419 20c7ce70a8d4 5 days ago 183MB
aka-gm 20221026_153626 f1d4f94a426e 6 days ago 183MB
这些镜像是不再使用的,且已推送到私有仓库(这里省略了仓库的HOST
),现在需要把他们全部删除。
从以上输出中取出镜像的REPOSITORY
与TAG
:
$ docker images aka-gm -f before=aka-gm:latest | grep aka-gm | awk '{printf "%s:%s\n",$1,$2}'
aka-gm:20221101_160758
aka-gm:20221031_172612
aka-gm:20221101_111237
aka-gm:20221101_144456
aka-gm:20221031_151951
aka-gm:20221031_104111
aka-gm:20221028_184209
aka-gm:20221028_115611
aka-gm:20221028_102701
aka-gm:20221027_145419
aka-gm:20221026_145618
aka-gm:20221026_153626
接下来直接删除镜像即可:docker images aka-gm -f before=aka-gm:latest | grep aka-gm | awk '{printf "%s:%s\n",$1,$2}' | xargs docker rmi
删除TAG
为<none>
的镜像
只需修改上述命令中的grep
即可:
docker images aka-gm -f before=aka-gm:latest | grep "<none>" | awk '{printf "%s:%s\n",$1,$2}' | xargs docker rmi