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

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

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

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

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


当前回答

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

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

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

其他回答

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

方法01:—更安全的方法

sudo usermod -aG docker ${USER}

若要应用新的组成员资格,请从服务器注销并返回,或键入以下内容:

su - ${USER}

系统将提示您输入用户密码继续。 确认您的用户现在已添加到docker组,输入以下命令:

id -nG

方法02:-不建议用于公共部署(不安全)

chmod 777 /var/run/docker.sock

或使用

sudo chown root:docker /var/run/docker.sock

我的第一个解决方案是:

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

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

chmod 777 /var/run/docker.sock

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

2019-05-26

这对我很管用!

示例docker-compose:

version: "3"
services:
  jenkins:
    image: jenkinsci/blueocean
    privileged: true
    ports:
      - "8080:8080"
    volumes:
      - $HOME/learning/jenkins/jenkins_home:/var/jenkins_home
    environment:
      - DOCKER_HOST=tcp://socat:2375
    links:
      - socat

  socat:
     image: bpack/socat
     command: TCP4-LISTEN:2375,fork,reuseaddr UNIX-CONNECT:/var/run/docker.sock
     volumes:
        - /var/run/docker.sock:/var/run/docker.sock
     expose:
        - "2375"

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

至少这解决了我的问题