清理私有 Docker 镜像仓库过期镜像需区分本地缓存与远程仓库,通过 Harbor 界面手动删除后必须执行垃圾回收,或调用 registry API/使用 reg、Harbor CLI 等工具批量删除并支持 dry-run 预览。

清理私有 Docker 镜像仓库中的过期历史镜像,核心在于区分“本地缓存”和“远程仓库”,并针对私有 registry(如 Harbor、自建 registry)执行远程删除操作。本地 docker rmi 只删本机镜像,不影响私有仓库;真正清理仓库本身,必须调用其 API 或使用平台管理界面。
确认目标镜像是否真在私有仓库中
先验证镜像确实存在于私有 registry 而非仅本地存在:
- 用
curl -X GET "https://your-registry.com/v2/<repo>/tags/list"查看某仓库所有 tag(需认证) - 或直接访问 Harbor Web 界面 → 进入对应项目 → “镜像”页,观察 tag 列表及推送时间
- 注意:带日期、commit hash、
dev/test等后缀的 tag,往往是历史构建产物,优先纳入清理范围
通过 Web 界面手动清理(适合小规模或首次操作)
以 Harbor 为例,这是最直观、风险最低的方式:
MiniMax 图片理解 + 网络搜索 MCP 工具。适配 Docker 环境(极空间等),支持图片 OCR 识别、图像内容理解、网络搜索。API Key 安全存储在本地 credentials 文件,不暴露在代码中。
- 登录 Harbor 控制台,进入目标项目
- 点击「镜像」→ 勾选待删 tag(支持多选、模糊搜索如
*-202507*) - 点击「删除」→ 确认
- 关键一步:删除后必须手动触发「垃圾回收(Garbage Collection)」,否则磁盘空间不释放。可在「系统管理 → 垃圾回收」中立即执行或等待定时任务
用 API 批量删除过期镜像(推荐自动化场景)
适用于按时间、标签规则批量清理,例如:删除 30 天前的非 prod 标签镜像:
- 启用 registry 的 delete 功能(配置文件中需设
delete: enabled: true) - 获取 Bearer Token:
curl -u user:pass "https://your-registry.com/service/token?service=harbor-registry&scope=repository:<repo>:pull,push" - 查 manifest digest:
curl -H "Authorization: Bearer $TOKEN" -H "Accept: application/vnd.docker.distribution.manifest.v2+json" "https://your-registry.com/v2/<repo>/manifests/<tag>" - 发送 DELETE 请求:
curl -X DELETE -H "Authorization: Bearer $TOKEN" "https://your-registry.com/v2/<repo>/manifests/<digest>" - 可封装为脚本,结合
jq解析时间字段或 tag 规则,实现条件过滤
借助专用工具简化操作
避免重复造轮子,用成熟 CLI 工具降低出错率:
-
reg(轻量、通用):支持 v2 registry,一条命令列出/删除镜像
reg rm your-registry.com/myapp:1.0.0或reg tags your-registry.com/myapp | grep '202506' | xargs -I{} reg rm your-registry.com/myapp:{} - Harbor CLI(Harbor 官方支持):集成项目级策略,支持基于正则或时间的 tag 保留策略配置
- 注意:所有工具操作前建议加 dry-run 模式预览,或先备份关键镜像(
docker pull到本地再docker save)

















