我是码头工人的新手。我只是试着在我的本地机器(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
用户jenkins需要添加到docker组中:
sudo usermod -a -G docker jenkins
然后重启詹金斯。
否则
如果你收到来自docker的消息而遇到堆栈溢出的问题,但你没有使用jenkins,那么错误很可能是一样的:你的非特权用户不属于docker组。
你可以:
sudo usermod -a -G docker [user]
在[user]所在的位置插入用户名。
你可以通过执行grep docker /etc/group命令来检查它是否成功,如下所示:
docker:x:998:[user]
在其中一行。
然后将您的用户组ID更改为docker(以避免不得不退出并再次登录):
newgrp docker
我在码头集装箱里查詹金斯。对我来说,最简单的解决方案是创建一个动态设置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