TeamCity代理中Docker守护进程套接字的权限被拒绝



我是CI和TeamCity的新手。
我使用Docker -compose运行TeamCity服务器和代理。

version: "3.7"
services:
server:
image: jetbrains/teamcity-server:latest
ports:
- "8111:8111"
volumes:
- C:TeamCityserverdata:/data/teamcity_server/datadir
- C:TeamCityserverlogs:/opt/teamcity/logs
agent:
image: jetbrains/teamcity-agent:latest
environment:
- SERVER_URL=http://server:8111
volumes:
- C:TeamCityagentconf:/data/teamcity_agent/conf
- C:TeamCityagentlogs:/opt/buildagent/logs
- /var/run/docker.sock:/var/run/docker.sock

我已经设置了TeamCity服务器来执行一些构建步骤,包括在Azure容器注册表上推送Docker映像的构建步骤。
当管道启动代理试图连接到注册表(连接是工作的服务器端),但我得到这个错误:

Cannot login to registry xxx.azurecr.io
An error occurred while executing 'docker login -u "TeamCity" --password-stdin xxx.azurecr.io':
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/auth": dial unix /var/run/docker.sock: connect: permission denied

在网上阅读,包括与我相似的SO问题,我发现问题似乎是代理不在docker组中。

我在Windows上运行,所有的答案,包括TeamCity的官方指南,都在Linux上做了例子。不管怎样,我已经尽力了。

我进入代理docker与docker exec -it teamcity-agent-1 /bin/bash,似乎已经在docker组。cat etc/group——比;docker:x:999:buildagent
这是这个解决方案的SO问题。


我也尝试按照官方指南的建议在代理的配置文件中添加teamcity.docker.use.sudo=true,但是服务器不认为安装了Docker的代理是合适的代理

有什么建议吗?

我修复了在我的docker-compose.yaml中添加user: root的问题,如本线程中建议的