在专用管道中设置对VSTS代理的docker权限

时间:2018-07-05 12:04:59

标签: docker azure-devops azure-pipelines

我已使用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失败,返回码:***

2 个答案:

答案 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