docker镜像仓库自动生命周期管理核心是按规则识别过期标签并安全清理,harbor支持图形化多条件策略与定时执行,registry依赖api+gc脚本,nexus pro提供绑定策略与自动评估,需保护稳定标签、分环境设策、校验引用并配置告警。

Docker 镜像仓库实现镜像标签的自动生命周期管理,核心是按规则识别过期标签 + 安全触发清理动作,而不是靠人工定期翻页删。不同仓库方案差异明显,但目标一致:在不误删关键镜像的前提下,持续释放空间、降低安全风险、提升可维护性。
Harbor:图形化策略 + 定时执行
Harbor v2.0+ 内置成熟保留策略,适合大多数企业私有部署场景。 - 支持多条件组合:可同时设置“匹配正则标签(如 `^v[0-9]+\.[0-9]+\.[0-9]+$`)” + “保留最近 30 次推送” + “排除 `latest` 和 `stable-*` 标签” - 策略绑定到具体项目,避免跨项目误删 - 执行方式灵活:手动点击“运行”预览效果;也可开启 Harbor 的 cron 服务,配置每日凌晨自动执行(需确认 `harbor-jobservice` 正常运行) - 关键细节:启用“试运行(Dry Run)”先看将删哪些镜像;勾选“删除无 tag 的 manifest”才能真正释放磁盘空间Docker Registry(原生):脚本驱动 + 两步清理
Registry 本身无 UI 和策略引擎,依赖外部工具+API+GC 配合。 - 第一步删 tag:调用 Registry API 发送 DELETE 请求(如 `DELETE /v2/myapp/manifests/sha256:abc...`),注意 header 必须带 `Accept: application/vnd.docker.distribution.manifest.v2+json` - 第二步垃圾回收:确保配置中 `delete.enabled: true`,再执行 `docker exec registry /bin/registry garbage-collect --dry-run /etc/docker/registry/config.yml` 预览;确认后去掉 `--dry-run` 实际执行 - 实用技巧:用 `registry-cli` 或自定义 Python 脚本遍历 `/v2/_catalog` 获取所有仓库,再查 `/v2/Nexus Repository:策略绑定 + 自动评估
Nexus Pro 版本支持 Cleanup Policies,OSS 版不支持。 - 可设复合条件:例如“标签匹配 `dev-.*`”且“最后修改时间早于 14 天”且“同名镜像保留至少 5 个” - 策略绑定到 Docker 类型仓库后,每次新镜像上传时自动扫描旧镜像是否符合清理条件 - 也可通过 Scheduled Tasks 设置固定时间(如每天 02:00)批量扫描执行,适合对实时性要求不高的环境通用实践要点
- 稳定标签必须显式保护:如 `latest`、`stable`、`prod-v1.2` 等,一律加入排除规则,不能依赖“保留最新 N 个”这类模糊逻辑 - 分环境差异化策略:dev 项目可设“保留最近 10 个”,test 项目“保留最近 7 天”,prod 项目保留全部或按合规周期归档 - 清理前务必校验引用:尤其在 CI/CD 中,某些镜像可能被 Helm Chart、K8s YAML 或部署脚本硬编码引用,删前建议 grep 代码库或查部署记录 - 配套告警不可少:清理任务执行后,应记录日志并触发通知(如邮件/钉钉),异常失败需立即告警,避免静默失效不复杂但容易忽略











