摘要固定是什么
digest 是镜像内容的 sha256 哈希,image@sha256:… 的引用方式与内容一一对应:标签可以被人重推、指向别的镜像,摘要不会。生产部署用摘要引用,回滚、审计与签名校验都有稳定锚点;缺点是可读性差,需要在发布记录里同时保留版本号。多架构场景注意:manifest 列表入口与各平台子镜像的摘要不同,固定时要确认目标架构对应的那一层。
基本信息
| 形式 | registry.example.com/app@sha256:<64 位十六进制> |
|---|---|
| 获取 | docker inspect --format '{{index .RepoDigests 0}}' 或 push 输出 |
| 适用 | 生产部署清单、签名校验、供应链策略 |
| 注意 | digest 按平台架构区分:多架构镜像 list 与各子清单的摘要不同 |
| 校验 | 部署前校验摘要可解析:docker buildx imagetools inspect 可查远程摘要 |
获取摘要的方式
| 方式 | 场景 |
|---|---|
| docker inspect RepoDigests | 本地已拉取的镜像 |
| push/CI 输出 | 构建产物流水线记录 |
| buildx imagetools inspect | 未拉取时查远程摘要 |
标签与摘要对比
| 引用方式 | 特性 | 适用 |
|---|---|---|
| 标签 app:1.8.0 | 人类可读、可被重推 | 开发调试、非生产环境 |
| 摘要 app@sha256:… | 内容寻址、不可变 | 生产部署、签名校验、审计 |
典型使用场景
- 生产部署清单:Pod 模板用摘要引用,标签重推不影响线上
- 签名与准入:按摘要校验签名,防同标签不同内容
- 审计留痕:发布记录存档摘要,事后可证明线上内容
- 多架构分发:按具体平台摘要引用,避免不同架构节点拉到不同镜像
- 回滚:按已知摘要部署,不再依赖标签解析
- 基线核对:把线上摘要与发布记录定期比对,发现漂移立即告警并排查
Kubernetes 引用
Kubernetes 引用
containers:
- name: app
image: registry.example.com/app@sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
# 取得摘要并记入发布单
# docker inspect --format '{{index .RepoDigests 0}}' app:1.8.0摘要固定牺牲可读性:在注释或部署记录里同时写明对应版本号。
CI 里建议由流水线自动把标签解析成摘要并回写清单,人工拼 64 位十六进制容易出错。