如何在Gitlab CI runner上使用Dockerhub的认证来拉取docker:dind

6
当我在自己的Gitlab CI Runner“myrunner”上运行此任务时。
test:
  tags: 
    - myrunner
  image: docker:latest
  stage: build
  services:
    - docker:dind
  script:
    - echo "It works!"
  rules:
    - when: always

我收到了这个错误信息:

Preparing the "docker" executor
Using Docker executor with image docker:latest ...
Starting service docker:dind ...
Pulling docker image docker:dind ...
ERROR: Preparation failed: Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit (docker.go:142:1s)
Will be retried in 3s ...

如何在拉取Dockerhub的docker:dind镜像时进行身份验证以避免拉取速率限制?
创建自己的Gitlab runner步骤:
启动runner:
docker run -d --name gitlab-runner --restart always \
     -v /srv/gitlab-runner/config:/etc/gitlab-runner \
     -v /var/run/docker.sock:/var/run/docker.sock \
     gitlab/gitlab-runner:latest

注册:

docker run --rm -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register \
  --non-interactive \
  --executor "docker" \
  --docker-image docker:stable \
  --url "DOMAIN" \
  --registration-token "REGISTRATION_TOKEN" \
  --description "docker-runner" \
  --tag-list "myrunner" \
  --run-untagged="true" \
  --locked="false" \
  --access-level="not_protected" \
  --docker-volumes "/certs/client" \
  --docker-volumes /var/run/docker.sock:/var/run/docker.sock \
  --docker-privileged

1
我认为 Docker Hub 应该被视为需要身份验证的私有仓库。有几种方法可以实现这一点,但在你的情况下,我认为你可以在你的 config.toml 中将 DOCKER_AUTH_CONFIG 作为环境变量传递。抱歉,我没有在我的端上测试过。 - Nicolas Pepinster
@NicolasPepinster 就是这样! - Matthias Munz
啊,太好了,很棒 :-) - Nicolas Pepinster
1个回答

10
我已经将以下内容添加到我的gitlab-ci.yml文件中:
variables:
    DOCKER_AUTH_CONFIG: '{ "auths": { "https://index.docker.io/v1/": { "auth": "$DOCKER_AUTH" } }}'

$DOCKER_AUTH的值可以通过以下方式生成:

echo -n "my_username:my_password" | base64

使用Dockerhub的用户名/密码。


此外,在 CI 文件或存储库变量中 DOCKER_AUTH_CONFIG 之前添加 DOCKER_AUTH 变量。 - M. Rostami
如果我启用了2FA并使用令牌,怎么样?my_password可以替换为user_token吗? - Saray Chak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接