如何从.gitlab-ci.yml中的GitLab的Docker Registry中提取?

时间:2016-08-22 07:21:29

标签: gitlab gitlab-ci-runner

我最近启用了GitLab的Docker Registry功能,它在我的桌面上运行良好。我们的下一步是在通过GitLab CI构建我们的软件时使用注册表。而不是构建一个docker镜像,在文档和官方Twitter帐户提到的几个medium.com帖子中以各种方式描述,我找不到从GitLab注册表中提取自己图像的方法。

如果我们通过.gitlab-ci.yml中的image指令从注册表中指定图像,我们会收到授权错误(我希望工作人员可能透明地授权自己,但事实并非如此):

Running with gitlab-ci-multi-runner 1.4.1 (fae8f18)
Using Docker executor with image registry.host.tld/NAMESPACE/PROJECT:latest ...
Pulling docker image registry.host.tld/NAMESPACE/PROJECT:latest ...
ERROR: Build failed (system failure): API error (500): Get https://registry.host.tld/v2/NAMESPACE/PROJECT/manifests/latest: error parsing HTTP 403 response body: no error details found in HTTP response body: "{\"message\":\"forbidden\",\"status\":\"error\",\"http_status\":403}"

所以工作人员应该呼叫docker登录。两个问题:

  1. 我们通过LDAP验证用户身份。我们真的应该只为CI服务器创建一个静态用户吗?
  2. 我们有很多工人在这里跑步。对于每一个人来说,这都需要做很多工作。
  3. 我是否忽略了一些非常明显的事情,还是应该在每个工作节点上登录docker?

    我们运行GitLab 8.10.6。

1 个答案:

答案 0 :(得分:0)

我也有这个问题。 在gitlab-ci-multi-runner项目中还有一个问题: https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/1663

参考文档,您应该只需登录到机器上的私人注册表,然后运行gitlab-runner: enter link description here

如果您在docker容器中使用gitlab-runner,则必须使用登录凭据将文件挂载到gitlab runner容器中。 因此运行gitlab容器的命令如下所示:

docker run -d --name gitlab-runner --restart always \
       -v /var/run/docker.sock:/var/run/docker.sock \
       -v /srv/gitlab-runner/config:/etc/gitlab-runner \
       -v /root/.docker/config.json:/root/.docker/config.json \
          gitlab/gitlab-runner

请参阅此示例root musst登录到注册表:

docker login https://registry.host.tld:5000

这里重要的部分是注册的URI。我收到类似于你的错误,并通过运行来克服它:

docker login https://registry.host.tld:5000/v2/

在其他注册表中可能会有所不同,您必须查看eoor消息并在命名空间/项目/之前使用该部分作为登录路径。

E.g。如果错误消息如下所示:

ERROR: Build failed (system failure): API error (500): 
Get https://registry.host.tld/v1/NAMESPACE/PROJECT/manifests/latest: 
error parsing HTTP 403 response body: no error details found in HTTP response body: "
{\"message\":\"forbidden\",\"status\":\"error\",\"http_status\":403}"

登录工作人员:

docker login https://registry.host.tld/v1/

希望这有帮助。