我是码头工人的新手。我只是试着在我的本地机器(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
希望这能有所帮助
方法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