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

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

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

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

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


当前回答

sudo setfacl——modify user:(用户名或ID):rw /var/run/docker.sock

我试着执行了几次命令

Sudo chmod 777 /var/run/docker.sock

但不幸的是,我每次登录ubuntu系统时都要这么做。 它不需要重新启动,比usermod或chown更安全。 如果用户名只存在于容器内,而不存在于主机上,则需要输入user ID。

我希望它能帮助你解决这个问题。

其他回答

也许你应该从一开始就使用“-u root”选项运行docker

至少这解决了我的问题

如果你想保持简单,可以在Dockerfile上使用fixdockergid。

这在Ubuntu 20.04中适用

sudo chmod 666 /var/run/docker.sock

不知道它到底能做什么,但能解决问题。

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

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