如何过滤删除指定Docker仓库的虚悬镜像且保留latest标签
可行实现方案
你之前执行的命令仅过滤了仓库维度,未添加虚悬镜像筛选条件,因此会将指定仓库下的latest标签镜像也纳入删除范围,不符合需求。以下是两种可用的实现方案:
方案1:直接查询匹配镜像ID后删除
docker rmi --force $(docker images -f "reference=registry.someRegistry" -f "dangling=true" -q)
该命令会先查询出registry.someRegistry仓库下所有标签为<none>的虚悬镜像ID,再执行强制删除,不会触及该仓库的latest标签镜像,也不会影响其他仓库的镜像。
方案2:使用docker image prune定向清理(更适合程序调用)
docker image prune -f --filter "reference=registry.someRegistry" --filter "dangling=true"
该方案稳定性更高,当没有符合条件的待清理镜像时,不会像方案1一样抛出「docker rmi 缺少参数」的错误,更适合集成到自动化程序中调用。
关键参数说明
reference=registry.someRegistry:过滤规则,仅匹配仓库名为registry.someRegistry的镜像,不会影响其他仓库的资源dangling=true:过滤规则,仅匹配标签为<none>的虚悬镜像,自动排除所有带合法标签的镜像(包含latest标签镜像)-f/--force:强制操作无需二次确认,适配自动化调用场景
如果需要匹配该镜像仓库下的所有子仓库,可以将reference参数修改为reference=registry.someRegistry/*即可。
内容的提问来源于stack exchange,提问作者rasilvap
相关产品推荐
相关产品推荐

