我已经在docker容器上安装了jenkins master并使用docker容器中的Swarm插件运行了slave。我在docker slave中创建了一个组。使用docker exec -it <container> bash
输入从属容器并输入groups
后,我正确列出了我创建的组。
但是,当我在作业说明shell中键入groups
并在该创建的从站上执行作业时,我的组不会出现。
修改的:
从属容器:只需以用户jenkins
启动jenkins-slave。启动时,通过CMD [ "/startup.sh" ]
执行以下代码(脚本:startup.sh)。 jenkins-slave.sh
下提供了DOCKER_SOCKET=/var/run/docker.sock
DOCKER_GROUP=dockergrp
JENKINS_USER=jenkins
if [ -S ${DOCKER_SOCKET} ]; then
DOCKER_GID=$(stat -c '%g' ${DOCKER_SOCKET})
sudo groupadd -for -g ${DOCKER_GID} ${DOCKER_GROUP}
sudo usermod -aG ${DOCKER_GROUP} ${JENKINS_USER}
fi
/usr/local/bin/jenkins-slave.sh
。
docker exec -it 8b85afe2b360 groups
从bash启动后: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 exec -it <id> docker ps
的情况下访问docker守护程序,问题似乎是缺少的组。运行命令from selenium import webdriver
from selenium.webdriver import DesiredCapabilities
desired_capabilities = DesiredCapabilities.PHANTOMJS.copy()
desired_capabilities['phantomjs.page.customHeaders.User-Agent'] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) ' \
'AppleWebKit/537.36 (KHTML, like Gecko) ' \
'Chrome/39.0.2171.95 Safari/537.36'
driver = webdriver.PhantomJS('./phantom/bin/phantomjs.exe', desired_capabilities=desired_capabilities)
driver.get('http://facebook.com')
可以成功输出正在运行的容器。
答案 0 :(得分:1)
添加组时存在已知问题,未为已登录的用户重新加载。
尝试将最后一行更改为:
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