我是码头工人的新手。我只是试着在我的本地机器(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 usermod -a -G docker $USER
reboot

其他回答

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

sudo chmod 666 /var/run/docker.sock

我在码头集装箱里查詹金斯。对我来说,最简单的解决方案是创建一个动态设置GID的自定义映像,例如:

FROM jenkins/jenkins:lts
...
CMD DOCKER_GID=$(stat -c '%g' /var/run/docker.sock) && \
    groupadd -for -g ${DOCKER_GID} docker && \
    usermod -aG docker jenkins && \
    sudo -E -H -u jenkins bash -c /usr/local/bin/jenkins.sh

参见:https://github.com/jenkinsci/docker/issues/263

或者你可以使用以下选项启动jenkins:

-v /var/run/docker.sock:/var/run/docker.sock \
-u jenkins:$(getent group docker | cut -d: -f3)

这假设你的jenkins映像已经安装了docker客户端。参见:https://getintodevops.com/blog/the-simple-way-to-run-docker-in-docker-for-ci

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

sudo usermod -a -G docker $USER

然后注销并重新登录。

第二步:修改docker组ID:

newgrp docker

奖励:检查你的新组:

id -g

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

改变波纹""your_user"为真正的用户

echo "your_user ALL=(ALL) NOPASSWD: /usr/local/bin/docker, /usr/local/sbin/docker, /usr/bin/docker, /usr/sbin/docker, /bin/docker, /sbin/docker" > /etc/sudoers.d/sudo_docker

usermod -aG docker your_user

chmod 0660 /var/run/docker.sock

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

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