GitHub Actions中Docker登录ECR遇权限错误:mkdir /github: permission denied
Error saving credentials: mkdir /github: permission denied排查 问题场景
使用以下GitHub Actions工作流尝试构建并推送镜像到ECR:
jobs: docker-build-push: name: Build and Push to ECR runs-on: ubuntu-latest permissions: id-token: write contents: read steps: - name: Checkout Code uses: actions/checkout@v3 - name: Configure AWS Credentials via OIDC uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: arn:aws:iam::<account>:role/<role_name> aws-region: <region> - name: Validate AWS Credentials run: aws sts get-caller-identity - name: Manual Login to Amazon ECR run: | export DOCKER_CONFIG=/github/home/.docker/config.json aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin <account>.dkr.ecr.<region>.amazonaws.com
运行时,aws sts get-caller-identity已验证AWS凭证有效,但ECR登录环节报错:
Error saving credentials: mkdir /github: permission denied
已尝试手动设置DOCKER_CONFIG为/github/home/.docker/config.json(docker info显示该路径正确),且OIDC对应的IAM角色已配置"ecr:*"全权限,使用aws-actions/amazon-ecr-login动作时同样触发该错误。
问题原因
DOCKER_CONFIG环境变量要求指向目录路径,而非具体的配置文件路径。你当前设置的是/github/home/.docker/config.json(文件路径),Docker会错误地将其识别为要创建的目录名,尝试在根目录下创建/github目录——而GitHub Actions runner的普通用户没有根目录的写入权限,因此触发permission denied错误。
另外,GitHub Actions的Ubuntu runner中,/github/home是/home/runner的符号链接,默认Docker配置目录就是/home/runner/.docker,完全不需要手动指定DOCKER_CONFIG。
修复方案
1. 修正手动登录步骤
移除错误的DOCKER_CONFIG设置,直接执行登录命令即可:
- name: Manual Login to Amazon ECR run: | aws ecr get-login-password --region <region> | docker login --username AWS --password-stdin <account>.dkr.ecr.<region>.amazonaws.com
(注意统一region参数,避免跨region凭证问题)
2. 使用官方ECR登录动作
直接使用aws-actions/amazon-ecr-login动作,无需手动处理配置路径:
- name: Login to Amazon ECR uses: aws-actions/amazon-ecr-login@v2
内容的提问来源于stack exchange,提问作者Jake Boomgaarden

