首页 > 解决方案 > Gitlab管道失败:错误:准备失败:来自守护进程的错误响应:toomanyrequests

问题描述

我有Harbor本地 docker 注册表,所有需要的图像都在那里,并将 GitLab 连接到 Harbor,所有图像都是从 Harbor 接收的,但是在 11 月 2 日之后,Docker 限制了拉取的数量,而且似乎从 Docker 中心拉取服务。是否可以使用dind服务从Harbor中拉出?

管道输出:

Running with gitlab-runner 12.10.1 (ce065b93)
  on docker_runner_7 WykGNjC6
Preparing the "docker" executor
30:20
Using Docker executor with image **harbor**.XXX.XXXX.net/library/docker_maven_jvm14 ...
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:198:2s)
Will be retried in 3s ...
Using Docker executor with image harbor.XXX.XXX.net/library/docker_maven_jvm14 ...
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:198:4s)
Will be retried in 3s ...
Using Docker executor with image harbor.XXX.XXX.net/library/docker_maven_jvm14 ...
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:198:3s)
Will be retried in 3s ...
ERROR: Job failed (system failure): 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:198:3s)

标签: gitlabgitlab-cidocker-in-dockerharbor

解决方案


另一种方式:如果你不想添加daemon.json,你可以这样做:

  1. 从 docker hub 拉取 docker-dind

docker pull docker:stable-dind

  1. 登录港口

docker login harbor.XXX.com

  1. 标记图像到港口

docker tag docker:stable-dind harbor.XXX.com/library/docker:stable-dind

  1. 推到港口

docker push harbor.XXX.com/library/docker:stable-dind

  1. 前往.gitlab-ci.yml

  2. 代替

services:
    - docker:dind

services:
    
    - name: harbor.XXX.com/library/docker:stable-dind
      alias: docker

我的.gitlab-ci.yml

stages:
  - build_and_push

Build:
  image: ${DOCKER_REGISTRY}/library/docker:ci_tools
  stage: build_and_push
  tags:
    - dind
  services:
    - name: ${DOCKER_REGISTRY}/library/docker:stable-dind
      alias: docker
  script:
    - docker login -u $DOCKER_REGISTRY_USERNAME -p $DOCKER_REGISTRY_PASSWORD $DOCKER_REGISTRY
    - make build test release REGISTRY=${DOCKER_REGISTRY}/library/ TELEGRAF_DOWNLOAD_URL="https://storage.XXX.com/ops/packages/telegraf-1.15.3_linux_amd64.tar.gz" TELEGRAF_SHA256="85a1ee372fb06921d09a345641bba5f3488d2db59a3fafa06f3f8c876523801d"


推荐阅读