Azure Pipeline Windows代理中PowerShell脚本无法运行docker compose
问题描述
执行脚本:
cd $(Build.SourcesDirectory) docker compose up
报错信息:
##[error]error during connect: this error may indicate that the docker daemon is not running: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/json?all=1&filters=%7B%22label%22%3A%7B%22com.docker.compose.config-hash%22%3Atrue%2C%22com.docker.compose.project%3Ddmdinference%22%3Atrue%7D%7D": open //./pipe/docker_engine: Access is denied.
问题根源:Docker Desktop由个人用户账户启动,但流水线通过系统账户运行,导致系统账户无权限访问Docker引擎的管道。
解决方案
给系统账户添加Docker管道访问权限
- 打开「计算机管理」,依次进入「系统工具」→「本地用户和组」→「用户」,确认流水线使用的系统账户名称(通常为
NT AUTHORITY\SYSTEM)。 - 以管理员身份打开命令提示符,执行以下命令授予权限:
若系统账户不是icacls "//./pipe/docker_engine" /grant "NT AUTHORITY\SYSTEM:F"NT AUTHORITY\SYSTEM,替换为实际账户名即可。
- 打开「计算机管理」,依次进入「系统工具」→「本地用户和组」→「用户」,确认流水线使用的系统账户名称(通常为
配置Docker Desktop允许远程访问(非加密方式,仅适合信任环境)
- 打开Docker Desktop设置,进入「设置」→「Docker Engine」,添加
"hosts": ["tcp://localhost:2375", "npipe://"]配置,保存后重启Docker Desktop。 - 在流水线脚本中添加环境变量配置:
set DOCKER_HOST=tcp://localhost:2375 cd $(Build.SourcesDirectory) docker compose up
- 打开Docker Desktop设置,进入「设置」→「Docker Engine」,添加
切换至系统账户启动Docker Desktop
用流水线使用的系统账户登录Windows,手动启动Docker Desktop,确保Docker服务在该账户上下文运行,流水线即可直接访问Docker引擎。
内容的提问来源于stack exchange,提问作者Intolighter
相关产品推荐
相关产品推荐

