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

GitLab流水线推送Docker镜像至Docker Hub遇unauthorized错误的解决方法

问题:GitLab流水线推送Docker镜像至Docker Hub时触发认证错误

问题详情

通过GitLab流水线向hub.docker.com推送Docker镜像时,出现unauthorized: authentication required认证错误。已配置以下CI/CD变量:

  • CI_REGISTRY_IMAGE设为index.docker.io/<myusername>/<myimagename>
  • CI_REGISTRY设为index.docker.io,也曾尝试改用docker.io

流水线执行时,docker login提示登录成功,但推送镜像环节仍报错,完整错误输出如下:

Successfully built 31aeefb313cc
$ docker tag $CI_REGISTRY_IMAGE:latest $CI_REGISTRY_IMAGE:1.0
$ docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY[0;m
Login Succeeded
$ docker push $CI_REGISTRY_IMAGE:1.0

The push refers to a repository [docker.io/[MASKED]/<image_name>]
d3bd94f6d15e: Preparing
91bef4c45fc9: Preparing
ea5c23c3dd62: Preparing
b6eeeecd7263: Preparing
cc2f8f3cc5db: Preparing
a8fb89efd40d: Preparing
425f0def498e: Preparing
9733ccc39513: Preparing
a8fb89efd40d: Waiting
425f0def498e: Waiting
9733ccc39513: Waiting
unauthorized: authentication required

原流水线脚本如下:

script:
    - docker version
    - docker build -t $CI_REGISTRY_IMAGE:latest .
    - docker tag $CI_REGISTRY_IMAGE:latest $CI_REGISTRY_IMAGE:1.0
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
    - docker push $CI_REGISTRY_IMAGE:1.0

解决方法

调整流水线脚本,直接使用CI_REGISTRY_USER变量拼接镜像名称,规避CI_REGISTRY_IMAGE可能带来的格式匹配问题,修改后的脚本如下:

docker build -t $CI_REGISTRY_USER/<image_name>:tag .
docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
docker push $CI_REGISTRY_USER/<image_name>:tag

注意:需将<image_name>和tag替换为实际的镜像名称与版本标签

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 03:53:15