我最近启用了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登录。两个问题:
我是否忽略了一些非常明显的事情,还是应该在每个工作节点上登录docker?
我们运行GitLab 8.10.6。
答案 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/
希望这有帮助。