docker 批量删除镜像

删除虚悬镜像

列出REPOSITORYTAG均为<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),现在需要把他们全部删除。

从以上输出中取出镜像的REPOSITORYTAG

$ 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 --filter before=aka-gm:latest --format "{{.Repository}}:{{.Tag}}"

接下来直接删除镜像即可:docker images aka-gm -f before=aka-gm:latest | grep aka-gm | awk '{printf "%s:%s\n",$1,$2}' | xargs -r docker rmi

排除TAG<none>的镜像

若以上列出的镜像中有TAG<none>的,会导致删除失败,需要排除该镜像。多过滤一次:

docker images aka-gm -f before=aka-gm:latest | grep aka-gm | grep -v "<none>" | awk '{printf "%s:%s\n",$1,$2}' | xargs -r docker rmi

删除TAG<none>的镜像

同样只需修改上述命令中的grep即可:

docker images aka-gm -f before=aka-gm:latest | grep "<none>" | awk '{printf "%s:%s\n",$1,$2}' | xargs -r docker rmi

posted @   夏目有三三  阅读(2615)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
点击右上角即可分享
微信分享提示