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

GitHub Actions推送Docker镜像到DockerHub报访问被拒绝解决方法

问题排查与修复指引

你遇到的denied: requested access to the resource is denied报错由多个配置错误共同导致,按以下顺序排查修复即可:

1. 修复无效的Docker登录步骤

你当前的登录逻辑完全没有生效:

  • 环境变量里定义的密钥名是DOCKER_USERNAME/DOCKER_PASSWORD,实际命令里引用的却是secrets.DOCKER_PASS/secrets.DOCKER_USER,密钥名不匹配会导致传入空值
  • 登录命令整体被双引号包裹,实际执行时只会把整串文本打印到控制台,不会执行管道登录操作,等于推送前根本没有完成DockerHub认证
  • 注意:DockerHub 2022年之后就不支持账号密码直接做CLI登录了,需要先去DockerHub后台生成具备仓库读写权限的Personal Access Token,把这个Token作为密码存在GitHub Secrets里使用

正确的登录步骤写法:

- name: Log in to Docker Hub
  run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login docker.io -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin

2. 修正镜像命名规则

从报错日志里的The push refers to repository [docker.io/${{IMAGE_NAME}}]可以看出,你配置的镜像名变量没有被正确解析,同时不符合DockerHub的推送命名要求:

  • DockerHub要求所有用户推送的镜像必须带账号名前缀,格式为你的DockerHub用户名/镜像名,比如DockerHub账号是demo123,镜像叫webapp,那镜像名必须是demo123/webapp。不带前缀的镜像会被识别为Docker官方镜像,普通用户没有推送权限
  • 你存到GitHub Secrets里的IMAGE_NAME必须严格符合上述命名格式,不能只写镜像名
  • 你现有配置里的Tag the image to latest步骤是完全多余的,自己给镜像打同名tag没有任何意义,可以直接删除
  • 推送镜像时必须明确指定tag,不要省略:latest,避免路径识别错误

3. 校验Secrets配置

到GitHub仓库的Settings -> Secrets and variables -> Actions页面,确认以下三个Secrets存在且值正确:

  • DOCKER_USERNAME:你的DockerHub登录用户名,不是绑定邮箱
  • DOCKER_PASSWORD:DockerHub生成的具备读写权限的Personal Access Token,不是账号登录密码
  • IMAGE_NAME:格式为DockerHub用户名/自定义镜像名,例如demo123/webapp

修正后的完整工作流步骤参考

steps:
  - uses: actions/checkout@v3
  - name: Log in to Docker Hub
    run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login docker.io -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
  - name: Build Docker image
    run: docker build . --file Dockerfile --tag ${{ secrets.IMAGE_NAME }}:latest
  - name: Push image to Docker Hub
    run: docker push ${{ secrets.IMAGE_NAME }}:latest

如果你的DockerHub仓库是私有仓库,额外确认使用的Token对该私有仓库有推送权限即可;公开仓库第一次推送时会自动创建对应仓库,不需要提前手动新建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:12:33