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

使用GitHub Actions自托管Runner登录AWS ECR失败求助

问题原因与解决步骤

核心问题

你遇到的permission denied while trying to connect to the Docker daemon socket错误,本质是自托管Runner的运行用户没有访问Docker套接字的权限。GitHub托管Runner是官方预配置好环境的,默认已经把运行用户加入了docker用户组,但你自己在EC2上搭建的自托管Runner需要手动配置这一步。

解决步骤

  1. 登录到你的EC2实例(也就是自托管Runner所在的服务器)
  2. 将Runner运行用户加入docker用户组
    假设你是用ubuntu用户部署的自托管Runner,执行以下命令:
    sudo usermod -aG docker ubuntu
    
    如果你的Runner用的是其他用户,把ubuntu替换成对应的用户名即可。
  3. 让权限生效
    可以重启Docker服务和GitHub Runner服务,确保组权限变更生效:
    sudo systemctl restart docker
    sudo systemctl restart actions.runner.<你的Runner名称>  # 替换成实际的Runner服务名
    
    或者也可以让该用户重新登录(退出当前SSH会话再重新连接),再重启Runner服务。
  4. 验证权限配置
    执行以下命令检查Docker套接字的权限:
    ls -l /var/run/docker.sock
    
    正常输出应该类似:
    srw-rw---- 1 root docker 0  月  日 时:分 /var/run/docker.sock
    
    这说明套接字属于docker组,只要你的Runner用户在这个组里,就能正常访问。

额外说明

  • 那个WARNING! Using --password via the CLI is insecure只是一个警告,不是导致失败的原因,解决权限问题后这个警告可能依然存在,但不会影响ECR登录和后续部署流程。
  • 不要在工作流的docker run等命令前加sudo,因为我们已经让Runner用户拥有了Docker操作权限,使用sudo反而可能引发其他权限问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 15:26:29