Docker信任:如何在不将其推送到存储库的情况下签署映像

时间:2018-03-29 17:58:39

标签: notary docker-trusted-registry

我们运行私人码头注册表,我正在尝试使用公证人添加图片签名。我有公证设置,Docker客户端可以在推送到注册表时对图像进行签名。

我的问题是我们没有推送到同一个注册表名称。我们使用Nexus来托管我们的docker镜像,这是运行私有注册表的Nexus方式的工件。

我们推送到 docker-registry- 发布 .example.com 并从 docker-registry.example.com 拉 我们无法推送到docker-registry.example.com

我无法找到一种方法让码头工人或公证人签署图像而不先推动它。我希望能做的是这样的事情:

docker push docker-registry-publish.example.com/team1/app1:1.0
docker tag docker-registry-publish.example.com/team1/app1:1.00 docker-registry.example.com/team1/app1:1.0
$some_way_to_sign docker-registry.example.com/team1/app1:1.0

没有' docker sign '命令,据我所知,docker签署图片的唯一方法是推送它。 '公证人'需要一个档案,而我不知道如何将它作为码头图像。 有没有办法让码头工人或公证人只做签名?

谢谢!

1 个答案:

答案 0 :(得分:0)

这些是我要执行的步骤。

首先,使用docker trust key generate生成密钥并将其命名为${key}

然后,加载密钥并为图像添加签名者

docker trust key load --name ${key} ${key}.pub
docker trust signer add --key ${key}.pub ${key} docker-registry-publish.example.com/team1/app1:1.0

接下来,构建图像:

docker build --disable-content-trust=true -t docker-registry-publish.example.com/team1/app1:1.0 .

然后,对图像签名:

docker trust sign docker-registry-publish.example.com/team1/app1:1.0

验证密钥和签名:

docker trust inspect --pretty docker-registry-publish.example.com/team1/app1:1.0

最后,将其推送:

docker push docker-registry-publish.example.com/team1/app1:1.0