Azure容器注册表(ACR)同名标签镜像覆盖问题及留存方案咨询
Azure容器注册表(ACR)同名标签镜像管理指南
无标签旧镜像的留存支持
ACR默认会留存被标签覆盖的旧镜像——当你用同一标签推送新镜像时,旧镜像不会被删除,只是原有标签会转移到新镜像上,旧镜像变为无标签镜像(通过唯一的SHA-256摘要标识),这和AWS ECR的机制一致。
注意:若ACR开启了生命周期策略(比如自动清理无标签或过期镜像),无标签旧镜像可能会被自动删除,需提前检查策略配置。
同名标签旧镜像的管理方法
1. 查看所有镜像(含无标签)
使用az acr repository show-manifests命令列出仓库内所有镜像清单,每个清单对应一个唯一镜像实例,无论是否带标签:
az acr repository show-manifests --name <你的ACR名称> --repository <镜像仓库名> --detail
输出会展示每个镜像的digest(SHA-256值)、创建时间、关联标签等信息,可从中找到被覆盖的旧镜像摘要。
2. 为旧镜像重新打标签
若需恢复旧镜像的可访问性,可通过其digest重新添加标签:
az acr repository update --name <你的ACR名称> --repository <镜像仓库名> --digest <旧镜像SHA-256摘要> --add-tags v1.0-old
完成后旧镜像将拥有新标签,不会再被同名的新镜像覆盖。
3. 配置生命周期策略管控镜像
为避免无标签镜像堆积或误删重要旧镜像,建议配置ACR生命周期策略:
- 可设置保留最近N个镜像实例,或指定时间范围内的镜像
- 可单独针对无标签镜像设置保留规则,比如保留最近30天的无标签镜像
配置命令示例:
az acr config retention update --name <你的ACR名称> --repository <镜像仓库名> --type Untagged --days 30
4. 避免覆盖的最佳实践
- 优先使用唯一标签,比如结合代码提交哈希、时间戳(如
v1.0-abc123、v1.0-20240520),从根源减少同名标签覆盖问题 - 重要镜像推送后,及时添加固定标签(如
v1.0-stable),防止后续被覆盖
内容的提问来源于stack exchange,提问作者Hamza Sharif
相关产品推荐
相关产品推荐

