【问题标题】:Gitlab pipeline failed : ERROR: Preparation failed: Error response from daemon: toomanyrequestsGitlab管道失败:错误:准备失败:来自守护进程的错误响应:toomanyrequests
【发布时间】:2021-02-23 02:48:43
【问题描述】:

我有 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)

【问题讨论】:

    标签: gitlab gitlab-ci docker-in-docker harbor


    【解决方案1】:

    另一种方式: 如果不想添加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"
    
    

    【讨论】:

    • 我也遇到了同样的问题,我没有使用 Harbor,而是使用了 GitLab Registry。创建了一个名为 Docker 的新仓库并推送到那里。一切正常,感谢您提到的程序。
    【解决方案2】:

    我找不到 Gitlab 的解决方案,但你可以告诉 docker 忽略 docker hub 注册表并转到本地注册表。

    /etc/docker/daemon.json 中添加daemon.json ,如果不存在,你可以简单地在路径中添加。

    daemon.json

    {
      "registry-mirrors": ["https://harbor.XXX.com"]
    }
    

    sudo systemctl restart docker

    【讨论】:

      【解决方案3】:

      我在将一些微服务部署到 kube 集群时也遇到了同样的问题,这是我写的一篇博客,它提供了一种解决方法来优化部署工作流程:https://mailazy.com/blog/optimize-docker-pull-gitlab-pipelines/

      【讨论】:

        猜你喜欢
        • 2016-12-20
        • 1970-01-01
        • 2019-04-30
        • 2020-01-11
        • 1970-01-01
        • 2021-08-22
        • 2022-06-13
        • 2018-05-28
        • 2020-01-12
        相关资源
        最近更新 更多