【问题标题】:setting up docker permission to VSTS agent in a private pipeline在私有管道中设置 VSTS 代理的 docker 权限
【发布时间】:2018-12-13 21:52:22
【问题描述】:

我已经使用 linux vm 设置了一个私有管道,并且安装了代理,并且在门户中它显示代理处于活动状态。我也安装了docker。如果我使用 sudo docker 在同一台机器上它可以工作。所以我确信这是 VSTS 代理运行命令时的权限问题。不确定我需要为哪个用户提供哪个权限,以便在我从 VSTS 初始化构建时运行 docker 命令。

在尝试连接到 Docker 守护程序时获得权限被拒绝 unix:///var/run/docker.sock 上的套接字:发布 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&memswap=0&networkmode=default&rm =&session=a53bebddc77c89993b6e464d9f2a56fac9b***e62***094***fe70355df2c8dfcf***8b9&shmsize=0&t=mycontainerreg.azurecr.io%2Ftk-dashboard%3A853&target=&ulimits=null: 拨打 unix /var/run/docker.sock:连接:权限被拒绝

/usr/bin/docker 失败,返回码:***

【问题讨论】:

    标签: docker azure-devops azure-pipelines


    【解决方案1】:

    在 VSTS 中,它是执行整个构建管道的构建服务帐户。该帐户还应运行该命令。

    注意,服务是在构建代理的配置过程中设置的。您可以将构建代理作为 systemd 服务运行。更多详情请参考此tutorial

    您需要授予适当的权限。只需要将用户添加到组 docker 中即可。

    sudo usermod -a -G docker user

    同时重启 systemd 服务并尝试再次触发构建。

    【讨论】:

    • 我运行了 ./svc.sh status 并获得了进程 ID,并且基于进程 ID 我能够找到用户名“myuser”。然后我运行 sudo usermod -a -G docker myuser。这将“myuser”添加到通过运行 awk -F':' '/docker/{print $4}' /etc/group 验证的 docker 组中。我仍然遇到同样的问题
    • 请注意添加后需要重启机器
    • 我最终运行了./env.sh; sudo ./svc.sh stop; sudo ./svc.sh start,这为我解决了问题。
    • 要明确 - 您不需要重新启动 VM。只是代理上运行的服务(进程)。
    • 正在运行 ./env.sh;须藤 ./svc.sh 停止; sudo ./svc.sh start 不能为我解决问题。知道为什么吗?
    【解决方案2】:

    首先,检查 docker 组是否已创建。 如果 gourp 不存在 -> 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

    【讨论】:

      【解决方案3】:

      我不得不运行以下命令来解决这个问题:

      sudo usermod -aG docker vstsbuildagent
      
      # check docker group
      grep 'docker' /etc/group 
      
      usermod -aG root vstsbuildagent
      
      sudo systemctl restart docker
      
      # your build agent process
      sudo systemctl stop vsts******** 
      sudo systemctl start vsts******** 
      
      

      【讨论】:

        猜你喜欢
        • 2018-06-15
        • 2012-07-31
        • 1970-01-01
        • 2018-08-03
        • 2018-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多