Docker 生产环境之使用可信镜像 - 自动化内容信任(content trust)

原文地址

获取并构建镜像的自动化系统也可以使用内容信任。任何自动化环境都必须在处理镜像前手动或通过脚本方式设置 DOCKER_CONTENT_TRUST

1. 绕过密码请求

要允许工具打包 docker 并推送可信内容,有两个环境变量允许你提供不需要脚本的密码,或者直接输入密码到:

  • DOCKER_CONTENT_TRUST_ROOT_PASSPHRASE
  • DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE

Docker 会尝试使用这些环境变量值作为密钥的密码。例如,镜像发布者可以导出仓库 targetsnapshot 快照密码:

$  export DOCKER_CONTENT_TRUST_ROOT_PASSPHRASE="u7pEQcGoebUHm6LHe6"
$  export DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE="l7pEQcTKJjUHm6Lpe4"

然后,在推送新标签时,Docker 客户端不会请求这些值,而是自动签名:

$  docker push docker/trusttest:latest
The push refers to a repository [docker.io/docker/trusttest] (len: 1)
a9539b34a6ab: Image already exists
b3dbab3810fc: Image already exists
latest: digest: sha256:d149ab53f871 size: 3355
Signing and pushing trust metadata

直接使用 Notary 客户端时,它使用 自己的一组环境变量

2. 构建时使用内容信任

可以使用内容信任进行构建。在运行 docker build 命令之前,应该手动或以脚本方式设置环境变量 DOCKER_CONTENT_TRUST。考虑下面的简单 Dockerfile。

FROM docker/trusttest:latest
RUN echo

FROM 标签正在获取已签名的镜像。不能构建具有本地或未签名的 FROM 的镜像。鉴于标签 latest 的内容信任数据存在,以下构建应该成功:

$  docker build -t docker/trusttest:testing .
Using default tag: latest
latest: Pulling from docker/trusttest

b3dbab3810fc: Pull complete
a9539b34a6ab: Pull complete
Digest: sha256:d149ab53f871

如果启用了内容信任,则依赖于没有信任数据的标记的 Dockerfile 构建,会导致构建命令失败(building from a Dockerfile that relies on tag without trust data, causes the build command to fail):

$  docker build -t docker/trusttest:testing .
unable to process Dockerfile: No trust data for notrust
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值