我是码头工人的新手。我只是试着在我的本地机器(Ubuntu 16.04)上使用docker和Jenkins。

我用下面的管道脚本配置了一个新作业。

node {
    stage('Build') {
      docker.image('maven:3.3.3').inside {
        sh 'mvn --version'
      }
    }
}

但是它失败了,错误如下:

在unix:///var/run/ Docker .sock试图连接到Docker守护进程套接字时被拒绝


当前回答

我的第一个解决方案是:

usermod -aG docker jenkins
usermod -aG root jenkins
chmod 664 /var/run/docker.sock

但没有一个对我有用,我试过了:

chmod 777 /var/run/docker.sock

这是可行的,但我不知道这是否正确。

其他回答

第一步:将用户名加入docker组:

sudo usermod -a -G docker $USER

然后注销并重新登录。

第二步:修改docker组ID:

newgrp docker

奖励:检查你的新组:

id -g

附:如果你感兴趣,参考资料在这里。

在我的例子中,不仅需要将jenkins用户添加到docker组,而且需要将该组作为jenkins用户的主组。

# usermod -g docker jenkins
# usermod -a -G jenkins jenkins

不要忘记重新连接jenkins从节点或重新启动jenkins服务器,这取决于您的情况。

在詹金斯运行的服务器上,我用了

sudo setfacl -m user:tomcat:rw /var/run/docker.sock

然后运行每个docker容器

-v /var/run/docker.sock:/var/run/docker.sock

使用setfacl似乎是更好的选择,并且不需要“-u user”。然后,容器以运行Jenkins的同一用户运行。但我很感激安全专家的反馈。

sudo usermod -a -G docker jenkins
sudo service jenkins restart

在我的情况下,这将成功工作。 导航本地回购并输入此命令。

sudo chmod 666 /var/run/docker.sock