启用Docker Content Trust需设置DOCKER_CONTENT_TRUST=1,使docker pull等操作仅接受已签名镜像;首次使用自动生成根密钥,签名镜像须用docker trust sign并推送;需配合可信镜像源与CI/CD验证环节,形成完整信任链。

启用Docker Content Trust(DCT)是防范镜像劫持与恶意代码植入最直接有效的手段。它通过数字签名强制验证镜像来源和完整性,确保拉取的镜像未被篡改、且确实来自预期发布者。
开启并强制使用内容信任
设置环境变量 DOCKER_CONTENT_TRUST=1 后,所有 docker pull 和 docker build --pull 操作将只接受已签名镜像:
- 执行
export DOCKER_CONTENT_TRUST=1(临时)或写入 shell 配置文件(长期) - 启用后,拉取未签名镜像会直接报错,例如:
no trust data for docker.io/library/nginx - 该机制默认信任 Docker Hub 官方镜像仓库的根密钥,首次拉取时会自动初始化本地信任数据库
为自建镜像添加可信签名
仅拉取签名镜像不够,你发布的 DVWA 或其他自定义镜像也必须签名,才能纳入信任链:
- 使用
docker trust sign命令对镜像打签:docker trust sign myregistry.example.com/dvwa:2.9.1 - 首次签名需生成并保管好私钥(保存在
~/.docker/trust/private),后续签名自动调用 - 签名后推送:先
docker push,再docker trust sign,两者缺一不可
结合镜像源管控降低中间风险
内容信任不能替代镜像源治理——若配置了不可信镜像加速器,攻击者可能劫持 DNS 或镜像代理返回伪造签名数据:
- 检查
/etc/docker/daemon.json中的registry-mirrors,移除非官方或无法审计的地址(如https://huecker.io) - 生产环境建议仅保留
https://registry.docker-cn.com或自建 Harbor 等可控镜像源 - 搭配
DOCKER_CONTENT_TRUST=1使用,可双重拦截:既防篡改,也防源头污染
在CI/CD中嵌入签名验证环节
自动化流程中不校验签名,等于绕过全部信任机制:
- 在流水线部署前加入命令:
docker trust inspect --pretty myregistry.example.com/dvwa:2.9.1 - 验证输出中必须包含有效证书、签名时间、发布者身份(如
admin@myorg.com) - 失败则中断部署,并触发告警;可配合 Kubernetes 的
cosign-webhook实现运行时拦截


















