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

How to authenticate on Dockerhub before pulling docker:dind with Gitlab CI runner

当我 运行 这个 Gitlab CI 工作是我自己 运行ner “my运行ner”

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 ...

如何在拉取镜像之前进行身份验证 docker:dind 以避免 Dockerhub 的拉取速率限制?

创建自己的 Gitlab 的步骤 运行ner:

开始 运行纳尔:

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

我将此添加到我的 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

使用 username/password 用于 Dockerhub。