如何在使用 Gitlab CI runner 拉 docker:dind 之前在 Dockerhub 上进行身份验证

Mat*_*unz 5 gitlab docker gitlab-ci dockerhub gitlab-ci-runner

当我在自己的跑步者“myrunner”上运行这个 Gitlab CI 作业时

test:
  tags: 
    - myrunner
  image: docker:latest
  stage: build
  services:
    - docker:dind
  script:
    - echo "It works!"
  rules:
    - when: always
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息:

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 ...
Run Code Online (Sandbox Code Playgroud)

我怎样才能拉动图像之前认证DIND:泊坞窗,以避免对拉速率限制Dockerhub

创建自己的 Gitlab 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
Run Code Online (Sandbox Code Playgroud)

登记:

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
Run Code Online (Sandbox Code Playgroud)

Mat*_*unz 7

我将此添加到我的gitlab-ci.yml

variables:
    DOCKER_AUTH_CONFIG: '{ "auths": { "https://index.docker.io/v1/": { "auth": "$DOCKER_AUTH" } }}'
Run Code Online (Sandbox Code Playgroud)

的值$DOCKER_AUTH可以用

echo -n "my_username:my_password" | base64
Run Code Online (Sandbox Code Playgroud)

使用 Dockerhub 的用户名/密码。