1

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

我的问题是我们没有推送到我们从中提取的相同注册表名称。我们使用 Nexus 来托管我们的 docker 镜像,这是 Nexus 运行私有注册表的方式的产物。

我们推送到docker-registry-publish.example.com并从docker-registry.example.com
我们无法推送到docker-registry.example.com

我找不到让 docker 或公证人在不先推送图像的情况下签署图像的方法。我想做的是这样的:

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 签署图像的唯一方法是推送它。' notary sign ' 需要一个文件,我不知道如何为它提供一个 docker 图像。
有没有办法让码头工人或公证人只做签名?

谢谢!

4

1 回答 1

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
于 2020-06-01T13:47:19.227 回答