Azure Pipeline使用Docker镜像作为构建代理时遇权限拒绝错误求助
解决Azure DevOps Server 2019构建代理访问Docker Daemon的权限问题
看了你的问题描述,核心是构建代理服务账号没有权限访问Windows上的Docker daemon,而且自动创建的docker-users组没出现,下面是一步步的解决步骤:
1. 手动创建docker-users本地用户组
因为Docker安装后自动创建组失败,我们手动来完成:
- 打开计算机管理(右键此电脑→管理)
- 展开本地用户和组→组
- 右键空白处→新建组
- 组名填
docker-users,描述可以写Docker daemon访问权限组,点击创建
或者用PowerShell命令(以管理员身份运行):
net localgroup docker-users /add
2. 将构建代理的服务账号加入docker-users组
Azure DevOps构建代理默认使用类似NT SERVICE\vstsagent.{池名}.{代理名}的服务账号运行,你需要先找到对应的账号:
- 打开服务(Win+R输入
services.msc) - 找到你的Azure DevOps代理服务,名字一般是
Azure Pipelines Agent ({池名}-{代理名}) - 右键→属性→登录标签,查看运行身份的账号
然后把这个账号加入docker-users组:
- 回到计算机管理的组列表,找到
docker-users组,右键→添加到组 - 点击添加,输入刚才查到的服务账号,点击检查名称确认后添加
或者用PowerShell命令(替换<代理服务账号>为实际账号):
net localgroup docker-users "<代理服务账号>" /add
3. 配置Docker Daemon允许非管理员访问
修改Docker的配置文件来开启非管理员访问:
- 在
C:\ProgramData\Docker\config目录下创建或编辑daemon.json文件(如果没有这个目录先创建) - 添加以下内容:
{ "hosts": ["npipe:////./pipe/docker_engine", "tcp://0.0.0.0:2375"] }
注意:
npipe是Windows管道协议,保留它确保Docker CLI能正常连接;tcp部分可选,但如果需要远程访问可以保留,生产环境建议启用TLS加密,这里先优先解决权限问题。
4. 重启相关服务
- 重启Docker服务:
Restart-Service Docker
- 重启Azure DevOps构建代理服务:
在服务里找到代理服务,右键→重启,或者用PowerShell:
Restart-Service "Azure Pipelines Agent ({池名}-{代理名})"
5. 验证权限是否生效
以构建代理服务账号的身份运行Docker命令测试:
- 打开命令提示符,用
runas命令切换到代理账号:
runas /user:<代理服务账号> cmd.exe
- 在新打开的命令窗口中运行:
docker version
如果能正常返回Server和Client的版本信息,说明权限配置成功了。
额外检查点
- 确认构建代理的池是
Default Windows,且该池的代理确实运行在你配置的Windows服务器上 - 检查Docker EE的版本是否兼容Azure DevOps Server 2019(建议使用Docker EE 18.09及以上版本,和2019的兼容性更好)
内容的提问来源于stack exchange,提问作者mdailey77
相关产品推荐
相关产品推荐

