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

Github Actions中Docker登录步骤授权失败求助

问题

Github Actions构建任务的Docker登录步骤失败,报错如下:

Error: Error response from daemon: Get "https://registry-1.docker.io/v2/": unauthorized: incorrect username or password

我的配置和Docker官方示例几乎一致,反复核对过凭据,构建器能正常读取存储为secrets的凭据(显示为***),用同样的凭据在终端可以正常登录Docker Hub,但在Github Actions中就是无法成功。相关配置代码如下:

name: ci

on:
  push:
    branches: [ "main" ]
    # Publish semver tags as releases.
    tags: [ 'v*.*.*' ]

env:
  USERNAME: ${{ secrets.DOCKER_HUB_USERNAME }}
  PASSWORD: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}

jobs:
  build:
    environment: prod
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
        
      - name: Login to Docker Hub
        uses: docker/login-action@v2
        with:
          username: $USERNAME
          password: $PASSWORD

...Rest of the yml
解决建议
  • 直接引用secrets变量:把登录步骤里的username: $USERNAME改成username: ${{ secrets.DOCKER_HUB_USERNAME }},password: $PASSWORD改成password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }},跳过env中转。有时候环境变量的解析顺序可能出问题,直接用secrets更稳妥。
  • 检查环境级secrets配置:你的job指定了environment: prod,要确认prod环境下已经配置了DOCKER_HUB_USERNAME和DOCKER_HUB_ACCESS_TOKEN这两个secrets。仓库级secrets和环境级secrets是分开的,指定环境后会优先读取环境级的,要是环境里没配置就会登录失败。
  • 验证访问令牌权限:确保Docker Hub生成的访问令牌有读写仓库的权限,别只给只读权限。同时确认令牌没过期、没被撤销。
  • 核对用户名大小写:Docker Hub用户名区分大小写,检查secrets里的用户名和Docker Hub账号完全一致,包括大小写。
  • 清理缓存试试:有时候缓存的Docker客户端状态会干扰登录,可以在登录步骤前添加清理缓存的操作,或者暂时禁用工作流里的缓存配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:45:56