jenkins job';s shell和bash-on-docker容器
我已经在docker容器上安装了jenkins master,并在docker容器中使用Swarm插件运行了一个从机。我在docker slave中创建了一个组。使用jenkins job';s shell和bash-on-docker容器,shell,docker,jenkins,Shell,Docker,Jenkins,我已经在docker容器上安装了jenkins master,并在docker容器中使用Swarm插件运行了一个从机。我在docker slave中创建了一个组。使用docker exec-it bash进入从属容器后,键入groups正确列出我创建的组 但是,当我在职务说明shell中键入组并在创建的从属服务器上执行职务时,我的组不会出现 编辑: 从属容器:只需以用户身份启动jenkins从属容器jenkins。启动时,通过CMD[“/startup.sh”]执行以下代码(脚本:startup
docker exec-it bash进入从属容器后,键入groups
正确列出我创建的组
但是,当我在职务说明shell中键入组
并在创建的从属服务器上执行职务时,我的组不会出现
编辑:
从属容器:只需以用户身份启动jenkins从属容器jenkins
。启动时,通过CMD[“/startup.sh”]
执行以下代码(脚本:startup.sh)。下提供了jenkins slave.sh的
从bash启动后:docker exec-it 8b85afe2b360组
输出jenkins dockergrp
触发仅包含以下代码的作业:
whoami
groups
docker ps
输出
jenkins
jenkins
Got permission denied while trying to connect to the Docker
daemon socket at unix:///var/run/docker.sock: Get
http://%2Fvar%2Frun%2Fdocker.sock/v1.30/containers/json: dial
unix /var/run/docker.sock: connect: permission denied
第二行中缺少组dockergrp
总的来说,如果没有sudo
,我无法访问docker守护程序,问题似乎是缺少组。运行命令docker exec-it docker ps
成功输出我正在运行的容器 添加组时存在一个已知问题,对于已登录的用户,不会重新加载组
尝试将最后一行更改为:
sudo su -l jenkins -c /usr/local/bin/jenkins-slave.sh
以在新的jenkins登录下启动脚本
注意:您可以预先添加exec
指令,以避免子进程,因此只需替换当前进程即可:
exec sudo su -l jenkins -c /usr/local/bin/jenkins-slave.sh
打印您的容器id,查看jenkins是否正在运行新的容器以及哪些图像。您是如何添加这样的组的?使用自定义Dockerfile?容器肯定是创建的容器。我运行了sudo-groupadd-for-g
,最后运行了sudo-usermod-aG-jenkins
。仍然没有弄清楚在您的终端是如何设置的。请尝试将最后一行更改为:sudo-su-l-jenkins-c/usr/local/bin/jenkins-slave.sh
。添加未重新加载的组时存在已知问题您的建议解决了此问题。:-)谢谢请添加答案以获得分数。
exec sudo su -l jenkins -c /usr/local/bin/jenkins-slave.sh