gitlab - 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)
解决方案
另一种方式:如果你不想添加daemon.json
,你可以这样做:
- 从 docker hub 拉取 docker-dind
docker pull docker:stable-dind
- 登录港口
docker login harbor.XXX.com
- 标记图像到港口
docker tag docker:stable-dind harbor.XXX.com/library/docker:stable-dind
- 推到港口
docker push harbor.XXX.com/library/docker:stable-dind
前往
.gitlab-ci.yml
代替
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"
推荐阅读
- java - register() 和 @ComponentScan 的区别
- node.js - Node.js Oracle 数据库连接错误:错误:TypeError:oracle.getconnection 不是函数
- scala - 将数组结构拆分为单值列 Spark scala
- python - 张量流中RMSPROP优化器的初始化
- json - Hive 将 JSON 数组中的每个 JSON 元素分解为行
- python - 为什么烧瓶重定向给我一个空白页?
- html - 为网页添加动画
- python-multiprocessing - 如何获取python的多处理数组'指针并将其传递给Cpp程序?
- java - 由于 web.xml 或 servlet.java,本地主机上的服务器 Tomcat v8.5 服务器无法启动 Eclipse
- java - 用于文本分析的 Elasticsearch 分析器