我们如何为私有注册表(如nexus)设置docker notary-server,notary-signer和notary-client?

时间:2018-01-15 11:07:18

标签: docker docker-registry notary

我已在公证基础设施下方设置:

  1. 公证服务器
  2. 公证签名者
  3. mariadb数据库,用于"公证服务器"和#34;公证签名者"使用docker-compose。
  4. 我想使用我的私有docker注册表(nexus),它使用我已启动并运行的公证基础设施部署在不同的机器中。

    请您告诉我一步一步的过程吗?

    我正在扩展我的发现:

    我正在尝试使用此链接https://github.com/theupdateframework/notary

    中提供的说明设置我自己的公证服务

    我做了什么:

    git clone https://github.com/theupdateframework/notary.git
    cd notary
    3 )$ docker-compose build
    $ docker-compose up -d
    

    执行上述步骤后,我在Docker主机上运行了3个容器并运行(在本地笔记本电脑上运行-Ubuntu16.04)

    1. notary_server
    2. notary_signer
    3. MariaDB的:28年1月10日
    4. 现在为了使用我的本地公证服务和私有注册表连接(在其他机器上作为容器托管),我已经完成了以下步骤:

      /etc/hosts entry
      127.0.0.1 notary-server
      mkdir -p ~/.notary && cp cmd/notary/config.json cmd/notary/root-ca.crt ~/.notary
      

      在此之后,我使用以下命令测试了连接,并且它成功了。

      openssl s_client -connect :4443 -CAfile fixtures/root-ca.crt -no_ssl3 -no_ssl2
      

      现在,为了对图像进行签名并将其推送到私有注册表,我已经设置了以下环境变量。

      DOCKER_CONTENT_TRUST_SERVER=https://notary-server:4443
      DOCKER_CONTENT_TRUST=1
      

      问题: 当我发出如下所示的docker push命令时

      sudo docker push nexus.xyz.com:5000/nginx:latest(之前我做过正确的标签)

      它没有通过签名,它直接将图像推送到私人注册表

      但是当我使用

      sudo docker push --disable-content-trust=false nexus.xyz.com:5000/nginx:latest
      

      它对图像进行了签名并推送,但在使用

      时未显示任何可信内容
      notary list nexus.xyz.com:5000/nginx:latest
      

      问题: 我是否需要进行任何其他配置才能使用我自己的公证服务?

      任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:0)

我能够按照您的描述进行操作。但是,当我推动时:

docker push localhost:5000 / uname / nginx:latest

*注意我有自己的私有注册表在本地运行

此外,这使您不必编辑/ etc / hosts:

公证人-s https://localhost:4443列表localhost:5000 / gt3389b / myfirstimage

答案 1 :(得分:0)

sudo docker push --disable-content-trust=false nexus.xyz.com:5000/nginx:latest

以root用户身份运行,因此主目录更改。

您应该尝试将.docker和.notary复制到根目录的主目录中。 或将当前用户添加到docker组中,并在不使用sudo的情况下运行docker命令。