首页/开发/CI/CD 与发布速查/镜像与制品清理策略
构建与制品管理58 条

镜像与制品清理策略

按「保留最近 N 个 + 指定标签模式」清理历史版本:先审计引用关系,再让规则逐步收紧,避免误删可回滚版本。

CI/CD 与发布速查开发更新于 2026-10-13

制品清理策略是什么

镜像与制品清理策略解决仓库存储膨胀:按「保留最近 N 个版本 + 标签模式 + 保留期」清理历史产物,前提是先审计引用关系——哪些标签被生产环境、回滚路径、部署清单引用——再让规则从宽到紧逐步收紧。主流平台都提供规则化清理:GitLab 容器镜像库清理策略、Harbor 保留策略、云厂商镜像仓库的生命周期策略等。清理是不可逆操作:先预览删除清单(平台支持时用预演功能),确认后再开启自动执行;保留期至少要覆盖回滚窗口。

基本信息

常见规则保留最新若干版本、保护 release 前缀、清理超期临时标签
平台GitLab 清理策略、Harbor 保留策略、ECR 生命周期策略
前置先统计存储占用与引用关系再定规则
安全阀先预演(dry-run)再自动执行
底线保留期覆盖回滚窗口

典型使用场景

  • 临时标签堆积:CI 每次构建产生的 sha 类标签定期清理。
  • 成本治理:存储与备份成本随版本数线性增长,需要周期性瘦身。
  • 合规保留:与保留 N 年的要求冲突时,用受保护前缀单独归档处理。
  • 回滚保障:保留窗口与回滚预案阶段对齐,保证可退。
  • 多平台统一:每个仓库分别配置规则,别只顾主镜像库。
  • 预演验证:平台支持预演时先看删除清单再执行。

清理规则思路

清理规则思路
匹配 tag 模式: ^sha-.*$
保留每镜像最新 10 个匹配标签
保留期 14 天(与回滚窗口对齐)
# 先预演删除清单,再开启自动执行

规则要素

要素示例作用
保留数量最新 10 个兜住近期版本
保留期14-90 天覆盖回滚窗口
保护模式release 前缀不清理保护正式版本
排除项手动固定标签特殊白名单
删除只是第一步:平台通常要再跑垃圾回收任务才真正释放底层存储。
多架构镜像按索引清理:删掉清单后子 manifest 会成为悬空对象,交给 GC 回收即可。
先宽后紧:第一版规则放宽,观察一个完整周期确认没有回滚受影响,再逐步收紧。

易错点

  • 激进规则误删回滚版本:事故时无版本可退;与回滚窗口对齐后再执行。
  • 未审计引用:部署清单里引用的镜像被删,拉取失败;先做引用扫描。
  • 跳过预演:预演名单能看到全部将删对象,跳过等于盲删。
  • 只清标签不管悬空层:空间要靠垃圾回收配合才降得下来。
  • 多仓库只清一个:其他仓库继续膨胀,纳入统一巡检。

数据来源与参考

  • GitLab Docs《Cleanup policy》
  • Harbor 文档《Retention》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌