如何在GitHub Actions中认证拉取Docker Hub服务镜像?
解决GitHub Actions自托管运行器中Services镜像拉取Docker Hub速率限制问题
方案1:在Job级别配置Docker Hub认证
通过在Job的container字段下配置Docker仓库认证,让整个Job的所有Services镜像拉取时自动使用该认证,绕过未认证的速率限制。示例配置:
jobs: your-job-name: runs-on: self-hosted container: image: ubuntu:latest # 可替换为你需要的基础镜像 credentials: username: ${{ secrets.DOCKER_HUB_USERNAME }} password: ${{ secrets.DOCKER_HUB_TOKEN }} services: postgres: image: postgres:14.5 steps: # 此处添加你的作业步骤
方案2:为单个Services单独配置认证
直接在目标Service的定义中添加credentials字段,指定Docker Hub账号和令牌,拉取该服务镜像时会自动使用认证:
jobs: your-job-name: runs-on: self-hosted services: postgres: image: postgres:14.5 credentials: username: ${{ secrets.DOCKER_HUB_USERNAME }} password: ${{ secrets.DOCKER_HUB_TOKEN }} steps: # 此处添加你的作业步骤
方案3:在自托管运行器上预配置全局Docker认证
如果所有作业都需要从Docker Hub拉取镜像,可在运行器机器上提前配置认证,无需在每个Job中重复设置:
- 在运行器机器上执行
docker login,输入Docker Hub用户名和个人访问令牌 - 登录完成后,Docker会在当前用户目录下生成
~/.docker/config.json文件 - 确保GitHub Actions运行器进程有权限读取该文件
注意事项
- 必须使用GitHub Secrets存储Docker Hub用户名和令牌,禁止硬编码敏感信息
- Docker Hub个人访问令牌可在账号设置中生成,比账号密码更安全
内容的提问来源于stack exchange,提问作者Neil Middleton
相关产品推荐
相关产品推荐

