镜像标签策略是什么
容器镜像标签的组合使用策略:语义版本用于追溯、提交短哈希用于精确定位、环境标签(可选)用于指向当前部署版本;避免只依赖浮动标签。同一镜像可以打多个标签,它们共享同一个内容摘要;部署清单尽量锁定摘要而不是标签。原则是:标签一旦推送不应被覆盖(不可变),同一标签重推会破坏下游引用与回滚依据,出问题时也无法指认部署的到底是什么。
基本信息
| 推荐组合 | 语义版本标签加提交哈希标签(同一镜像打多个标签) |
|---|---|
| 引用策略 | 部署清单锁定摘要;人类阅读用语义版本 |
| 否定做法 | 同一标签重推覆盖历史内容 |
| 摘要含义 | 由内容计算,多个标签共享同一摘要 |
| 仓库策略 | 按仓库能力开启标签不可变或写保护 |
典型使用场景
- 版本发布:给同一镜像同时打语义版本与提交哈希两个标签。
- 环境追踪:环境指向固定标签时写明更新规则与责任人。
- 回滚:按摘要或上一版本标签重新部署旧镜像。
- 审计:排查某次部署内容时用摘要精确定位。
- 多架构镜像:同标签可覆盖多平台,引用与排查时注意平台差异。
- 清理:旧版本标签按保留策略归档或删除,避免仓库膨胀。
多标签推送
多标签推送
docker tag app:build registry.example.com/app:1.8.0
docker tag app:build registry.example.com/app:sha-abc1234
docker push registry.example.com/app:1.8.0
docker push registry.example.com/app:sha-abc1234
# 部署引用摘要(内容绑定):
# registry.example.com/app@sha256:<digest>镜像摘要由内容计算:同一镜像多标签共享同一摘要,引用它与标签无关。
对可重建性保持怀疑:日期类或环境类标签也应遵守不可变原则,重推产生的歧义会在回滚时集中爆发。
环境标签(如 stable)要配更新流程:谁改、何时改、改动记录在案,否则环境指向内容会悄悄漂移。