首页/云/Docker 容器速查/按 digest 固定部署镜像
资源与安全50 条

按 digest 固定部署镜像

tag 可以移动、digest 不会:部署与回滚写成 image@sha256:… 才能保证版本指向确定内容,配合镜像仓库的不变标签策略使用。

Docker 容器速查云更新于 2026-10-13

为什么按 digest 部署

镜像引用有两种写法:仓库名加标签(app/web:1.4.2)和仓库名加摘要(app/web@sha256:…)。标签是可变引用,同一个标签可以被覆盖指向新内容;摘要由镜像内容计算得出,内容变摘要就变。生产部署与回滚写成摘要形式,才能保证「这次部署的就是上次验证过的那一份」,也便于审计时还原当时的实际内容。

基本信息

概念digest 是内容摘要,tag 是可变引用
获取docker inspect 的 RepoDigests,或 docker images --digests
使用docker run 仓库名@sha256:…,编排文件的 image 字段同样支持
前提镜像已推送到仓库,仅本地构建未推送的镜像没有 RepoDigests

典型使用场景

  • 生产部署固定版本:避免上游把 latest 或版本标签覆盖后,重启拉到的内容变了
  • 回滚可复现:发布记录里同时写标签与摘要,回滚时按摘要精确还原
  • 审计留痕:摘要与版本评审记录一起归档,事后可核对部署内容
  • 供应链对齐:扫描结果与部署对象用同一个摘要串起来,结论可复现
  • 多环境一致性:测试与生产部署同一摘要,减少环境间的内容差异

获取摘要并按摘要部署

获取摘要并按摘要部署
# 拉取后读取仓库摘要
docker pull nginx:1.27-alpine
docker inspect -f '{{index .RepoDigests 0}}' nginx:1.27-alpine

# 用摘要部署,内容指向确定
docker run -d --name web nginx@sha256:把上一步输出粘贴到这里

# 编排文件里同样写在 image 字段
# services:
#   web:
#     image: nginx@sha256:...

# 部署后核对实际使用的摘要
docker inspect -f '{{index .RepoDigests 0}}' web

引用方式对照

写法可复现性适用场景
仓库名:标签标签可被覆盖,指向可能变化开发与快速迭代
仓库名@摘要内容唯一,指向固定生产部署、回滚与审计
本地镜像 ID仅本机有效,重启重建后失效本机临时排障
摘要固定的是内容,不保证内容安全:漏洞扫描与基线检查仍要单独做,两者互补。
多架构镜像的摘要指向清单列表,不同平台拉取到的是各自变体,跨平台部署时摘要要按目标平台核对。

易错点

  • 本地构建的镜像直接用摘要:未推送到仓库时没有 RepoDigests,脚本会取到空值
  • 只记标签不记摘要:标签被覆盖后无法还原当时部署的内容,审计与回滚都失去依据
  • 跨架构照搬摘要:清单列表摘要对应的平台变体不同,换架构部署要先确认
  • 把摘要当安全凭证:摘要只证明内容未变,不证明内容无漏洞,扫描与基线仍要执行

数据来源与参考

  • Docker 官方文档:docker image digest 与 RepoDigests(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌