You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab Runner配置Docker Hub认证解决拉取限速及AWS参数存储引用

解决Docker Hub镜像拉取速率限制:Terragrunt从AWS参数存储引用令牌配置GitLab Runner认证

问题现象

拉取Docker镜像时触发速率限制,报错如下:

Running with gitlab-runner 14.0.1 (c1xsefsq)
   on gitlab-runners-xxxxxx   vjqSst4o
Preparing the "docker+machine" executor 01:42
 Using Docker executor with image node:14 ...
 Pulling docker image node:14 ...
 WARNING: Failed to pull image with policy "always": toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit (manager.go:205:0s)
 ERROR: Preparation failed: failed to pull image "node:14" with specified policies [always]:
toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit (manager.go:205:0s)

已尝试的配置

为通过Docker Hub付费账号认证解决速率限制,已尝试修改GitLab Runner的config.toml文件,添加DOCKER_AUTH_CONFIG环境变量:

[[runners]]
  environment = ["DOCKER_AUTH_CONFIG={\"auths\":{\"registry.example.com:5000\":{\"auth\":\"<NEW ACCESS TOKEN HERE FROM MY DOCKERHUB ACCOUNT>=\"}}}"]

同时在Terragrunt配置中设置了相关环境变量:

runners_environment_vars      = ["DOCKER_AUTH_CONFIG={"auths":{"https://index.docker.io/v1/":{"auth":"MY TOKEN"}}}"

需求

需实现:在Terragrunt代码中从AWS参数存储引用Docker Hub访问令牌,完成GitLab Runner的Docker Hub认证配置,彻底解决镜像拉取速率限制问题。


解决方案

1. 存储Docker Hub认证令牌到AWS参数存储

  • 生成Docker Hub的auth值:将DockerHub用户名:访问令牌进行Base64编码(可通过echo -n "用户名:令牌" | base64命令生成)
  • 在AWS Systems Manager参数存储中创建安全字符串类型的参数,路径建议设为/gitlab-runner/dockerhub-auth-token,值为上述Base64编码后的字符串

2. 在Terragrunt中引用SSM参数并配置GitLab Runner

在Terragrunt配置文件(如terragrunt.hcl)中添加以下内容:

步骤1:添加SSM参数数据源

data "aws_ssm_parameter" "dockerhub_auth_token" {
  name           = "/gitlab-runner/dockerhub-auth-token"
  with_decryption = true # 安全字符串类型参数需开启解密
}

步骤2:构造DOCKER_AUTH_CONFIG环境变量

在GitLab Runner的环境变量配置中,注入动态获取的令牌:

runners_environment_vars = [
  "DOCKER_AUTH_CONFIG={\"auths\":{\"https://index.docker.io/v1/\":{\"auth\":\"${data.aws_ssm_parameter.dockerhub_auth_token.value}\"}}}"
]

3. 配置IAM权限

确保GitLab Runner所在的IAM角色拥有访问该SSM参数的权限,添加以下IAM策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ssm:GetParameter",
      "Resource": "arn:aws:ssm:你的AWS区域:你的AWS账号ID:parameter/gitlab-runner/dockerhub-auth-token"
    }
  ]
}

内容的提问来源于stack exchange,提问作者Maruthirao Konda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 21:27:30