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

GitLab流水线构建镜像失败,Docker Hub认证报错求助

GitLab流水线Docker镜像构建认证失败修复方案

问题定位

流水线执行docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CONTAINER_REGISTRY时,访问https://registry-1.docker.io/v2/返回unauthorized错误,核心原因是GitLab已弃用Docker Hub注册令牌支持,原有认证机制失效。

可行修复方案

方案1:替换为Docker Hub个人访问令牌(PAT)

  • 登录Docker Hub,进入账户设置→安全→新建访问令牌
  • 配置令牌名称与权限(拉取镜像需read权限,推送需write权限)
  • 生成后复制令牌(仅显示一次,务必保存)
  • 在GitLab项目的CI/CD→变量中添加:
    • DOCKER_HUB_USERNAME:Docker Hub用户名
    • DOCKER_HUB_TOKEN:生成的个人访问令牌,勾选保护变量和掩码变量
  • 更新流水线登录命令为:
    echo "$DOCKER_HUB_TOKEN" | docker login -u "$DOCKER_HUB_USERNAME" --password-stdin docker.io
    

方案2:通过GitLab容器仓库代理Docker Hub镜像

  • 在GitLab项目/群组的包与注册表→容器注册表中创建代理仓库,目标设为docker.io,自定义仓库名称(如docker-hub-proxy)
  • 将流水线中镜像地址从docker.io/[namespace]/[image]替换为registry.gitlab.com/[your-group]/[your-project]/docker-hub-proxy/[namespace]/[image]
  • 此方式无需额外登录,GitLab CI_TOKEN会自动完成代理仓库的认证

方案3:移除自定义登录命令(共享Runner场景)

若使用GitLab官方共享Runner,部分Runner已预配置Docker Hub认证,可尝试删除流水线中的docker login步骤,直接执行镜像拉取/构建操作,验证是否正常运行。

验证

修改后触发流水线,检查日志是否输出Login Succeeded,确认镜像构建流程无报错。


内容的提问来源于stack exchange,提问作者Matias Cocciolo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 13:50:33