我已使用linux vm设置了专用管道,并且已安装代理,并且在门户网站中显示代理处于活动状态。我也有安装docker。在同一台机器上,如果我使用sudo docker则可以工作。因此,我确定VSTS代理运行命令时这是权限问题。不知道我需要给哪个用户哪个权限,以便从VSTS初始化构建时运行docker命令。
尝试连接Docker守护程序时拒绝获得权限 套接字在unix:///var/run/docker.sock:Post http://%2Fvar%2Frun%2Fdocker.sock/v .37 / build?buildargs =%7B%7D&cachefrom =%5B]&cgroupparent =&cpuperiod = 0&cpuquota = 0&cpusetcpus =&cpusetmems =&cpushares = 0&dockerfile = Dockerfile&labels =%7B%7D&memory = 0&modemswap = default&rm = &session = a53bebddc77c89993b6e464d9f2a56fac9b *** e62 *** 094 *** fe70355df2c8dfcf *** 8b9&shmsize = 0&t = mycontainerreg.azurecr.io%2Ftk-dashboard%3A853&target =&ulimits 拨打unix /var/run/docker.sock:connect:权限被拒绝
/ usr / bin / docker失败,返回码:***
答案 0 :(得分:2)
在VSTS中,执行整个构建管道的是构建服务帐户。此帐户还应该运行命令。
注意,该服务是在配置构建代理期间设置的。您可以将构建代理作为systemd服务运行。更多详细信息,请参阅此tutorial。
您将需要授予适当的权限。用户只需要添加到组docker。
sudo usermod -a -G docker user
还重新启动systemd服务,然后尝试再次触发构建。
答案 1 :(得分:0)
首先检查docker组是否创建。 如果集团不存在 -> https://www.digitalocean.com/community/questions/how-to-fix-docker-got-permission-denied-while-trying-to-connect-to-the-docker-daemon-socket
然后
usermod -aG docker $USER
usermod -aG root $USER
chmod 777 /var/run/docker.sock