digest 是什么
digest 是镜像内容的摘要值,形如 sha256: 后接一串字符。标签是可移动的引用,同一个 latest 今天和下周可能指向不同内容;digest 由内容计算得出,内容不变摘要就不变。因此需要「每次部署都拿到完全相同内容」时,用 镜像名@sha256:摘要 的形式引用比标签可靠得多。
基本信息
| 用途 | 不可变的内容引用 |
|---|---|
| 获取方式 | docker images --digests、docker image inspect 的 RepoDigests |
| 引用语法 | 镜像名@sha256:<摘要> |
| 层级差异 | 多架构清单的摘要与单平台镜像摘要不同 |
| 适用平台 | Docker Engine 与支持 OCI 摘要的镜像仓库 |
典型使用场景
- 生产部署固定到具体摘要,避免标签被覆盖造成版本漂移
- 审计取证:证明某次上线运行的到底是哪份内容
- 多架构镜像分别核对清单摘要与平台摘要
- 排查本地与线上镜像是否完全一致
- 供应链校验:配合签名与摘要固定,防止内容被替换
查看与引用
查看与引用
docker images --digests # 查看镜像的摘要列
docker image inspect nginx:1.27 --format '{{index .RepoDigests 0}}'
docker pull nginx@sha256:<完整摘要> # 按摘要拉取
docker buildx imagetools inspect nginx:1.27 # 查看清单与各平台摘要
docker image inspect nginx@sha256:<摘要> --format '{{.Id}}' # 确认落地后的镜像 ID摘要相关字段读法
| 字段 | 含义 | 读取要点 |
|---|---|---|
| DIGEST(images 输出) | 本地记录的内容摘要 | 从未推送过的镜像可能为空 |
| RepoDigests | 仓库中的摘要引用 | 包含仓库地址前缀 |
| Manifest Digest | 多架构清单的摘要 | 对应整个平台集合 |
| 单平台摘要 | 某个架构镜像的摘要 | 与清单摘要不同,按层级选择 |
摘要必须完整复制,手抄容易漏字符并导致 manifest unknown 报错,直接从 inspect 或 images 的输出里复制。
固定摘要之后,源仓库若按保留策略清理了该镜像,拉取会失败,保留策略要覆盖部署与回滚窗口。
编排文件里同样可以引用摘要:把 image 写成 镜像名@sha256:摘要 的形式,部署时就固定到具体内容。
在要求严格可复现的部署流程里,把摘要写进发布记录:回滚时按记录里的摘要拉取,不必再猜当时的标签指向哪份内容。