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

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

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

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

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


当前回答

2018-08-19

我已经被这个问题困了好几天了,因为我还没有找到一个完整的答案,关于为什么和如何,我将为其他偶然发现同样问题的人发布一个答案,上面的答案不起作用。

以下是在docker中运行Jenkins时的3个关键步骤:

You mount the socket /var/run/docker.sock to the jenkins container in order to be able to use the docker from the host. You have to install docker inside the container in order to use it. This is a great and simple article on how to do that. Note that newer versions might already have docker installed You run sudo usermod -a -G docker jenkins in order to add jenkins to the docker group. However, here you might run into a permission problem if the host docker and the container docker don't have the same group id so it is very important to adjust the container docker's gid to be the same as the host docker gid

您可以将此作为启动脚本的一部分,也可以使用exec并手动执行:groupmod -g <YOUR_HOST_DOCKER_GID> docker。

另外,不要更改/var/run/docker的权限。Sock到777或类似的东西,因为这是一个很大的安全风险,你基本上允许每个人在你的机器上使用docker

希望这能有所帮助

其他回答

我的成功

sudo usermod -a -G docker $USER
reboot

我的第一个解决方案是:

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

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

chmod 777 /var/run/docker.sock

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

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

sudo chmod 666 /var/run/docker.sock

我们有两种方法来解决这个问题

方法1 应用新的组成员资格

sudo usermod -aG docker ${USER}
su - ${USER}

方法2 修改文件权限和组权限

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

方法1为安全方法。

检查docker是否正在运行 Sudo systemctl status docker

检查错误 Docker ps a

准许 sudo usermod -aG docker ${USER} 下一个命令 su - ${USER}

如果出现错误,请再次检查 Docker ps a