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

自托管Github Action运行器执行docker-compose命令提示权限拒绝问题求助

解决Windows自托管Github Action Runner中Docker-Compose权限拒绝问题

看起来问题出在Github Action Runner的运行账户没有足够权限访问Docker的命名管道——毕竟你手动登录到服务器执行命令完全正常,但在Action步骤里就触发了权限拒绝错误。下面是几个针对性的解决方案,你可以依次尝试:

1. 检查并调整Github Action Runner服务的运行账户

默认情况下,Github Action Runner可能以Local System账户运行,但这个账户未必被授予了Docker管道的访问权限。你可以这么操作:

  • 打开Windows服务管理器(运行services.msc即可调出)
  • 找到名为GitHub Actions Runner的服务,右键选择「属性」
  • 切换到「登录」标签页,尝试将运行账户改为你手动登录时使用的管理员账户(这个账户已经能正常运行docker-compose)
  • 重启服务后再触发Action测试

2. 授予Runner账户访问Docker命名管道的权限

Docker在Windows上通过//./pipe/docker_engine命名管道通信,需要确保Runner的运行账户拥有这个管道的读写权限:

  1. 以管理员身份打开PowerShell
  2. 先查看当前管道的权限配置:
Get-Acl -Path \\.\pipe\docker_engine | Format-List
  1. 如果没看到Runner运行账户的权限记录,添加权限(以Local System账户为例):
$acl = Get-Acl -Path \\.\pipe\docker_engine
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
    "NT AUTHORITY\SYSTEM",
    "FullControl",
    "Allow"
)
$acl.AddAccessRule($rule)
Set-Acl -Path \\.\pipe\docker_engine -AclObject $acl

如果Runner使用的是其他自定义账户,把"NT AUTHORITY\SYSTEM"替换成对应的账户名即可,比如"DOMAIN\YourRunnerAccount"

3. 在Action步骤中明确指定docker-compose的完整路径

有时候PowerShell的环境变量在Action上下文里没有正确加载,导致找不到docker-compose或者调用了错误的版本。你可以修改Action步骤:

- name: Run Cypress Tests
  run: |
    cd $Env:GITHUB_WORKSPACE\Tests\ 
    & docker version 
    & "C:\Program Files\Docker\Docker\resources\bin\docker-compose.exe" up --build --scale cypress=3 --force-recreate

注意路径要根据你服务器上docker-compose的实际安装位置调整

4. 重启相关服务

做完上述任意调整后,记得重启Docker服务和Github Action Runner服务,确保配置生效:

Restart-Service docker
Restart-Service "GitHub Actions Runner*"

这些步骤应该能解决你遇到的权限拒绝问题——毕竟手动执行正常说明Docker本身是正常运行的,只是Action的运行上下文权限不足导致的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 20:52:52