Linux Jenkins在远程docker代理中运行sh卡滞 问题
我配置了一个远程docker实例(在服务器a上),它启用Linux Jenkins在远程docker代理中运行sh卡滞 问题,linux,docker,jenkins,docker-compose,jenkins-pipeline,Linux,Docker,Jenkins,Docker Compose,Jenkins Pipeline,我配置了一个远程docker实例(在服务器a上),它启用tcp://server_a:2376为API提供服务 我在服务器B上部署了一个Jenkins服务器,使用(Dockerjenkinsci/blueoceanimage) 现在我可以通过TCP端口访问服务器A上的Docker实例: DOCKER_HOST=tcp://<server_a>:2376 docker ps DOCKER_HOST=tcp://<server_a>:2376 docker exec some
tcp://server_a:2376
为API提供服务
我在服务器B上部署了一个Jenkins服务器,使用(Dockerjenkinsci/blueocean
image)
现在我可以通过TCP端口访问服务器A上的Docker实例:
DOCKER_HOST=tcp://<server_a>:2376 docker ps
DOCKER_HOST=tcp://<server_a>:2376 docker exec some_container "ls"
管道控制台输出
我已经在这个问题上浪费了好几天了,有什么想法吗?好吧,这听起来可能很傻,但是试着把python--version改为改为python3--version 另外,确保Python容器在sh和bash中具有所有适当的路径
最后,确保用于Python命令执行的docker.image.inside()black的语法正确。看起来您缺少Jenkins容器中的docker客户端。您需要docker客户端在本地或远程运行docker命令 尝试在Jenkins容器中下载/安装docker客户端二进制文件,并确保它位于system$PATH中 一种安装方式(在您的环境中可能不起作用-so ymmv) docker客户端位于路径中后,重新运行管道。另外,在管道中打印echo$(哪个docker)的输出,以便调试。!!!最后 经过几天的尝试,我找到了导致问题的关键点
问题环境的再现
- 服务器A:使用图像
jenkinsci/blueocean
- 服务器B:Jenkins代理节点(JNLP)部署在docker compose下,使用image
Jenkins/入站代理:alpine
/var/run/docker.sock
装入其中,这样两个Jenkins节点都可以访问容器中的docker,并且管道中应该支持代理docker
现在我制作管道脚本,如下所示:
pipeline {
agent {
docker {
image 'python:latest'
label 'agent-hkgw'
}
}
stages {
stage('main') {
steps {
sh '''python --version'''
}
}
}
}
好吧,当我们建造它的时候,斯塔克:
这就是我在问题中提到的问题
解决方案 在多次尝试失败后,我注意到从Jenkins代理节点到管道构建容器的装载卷没有在Jenkins代理节点中显式声明。因此,我尝试将
/var/jenkins
文件夹从服务器B装载到jenkins代理容器:
然后,建造的管道就像奇迹一样运转良好
希望这能帮助那些在将来遇到同样问题的人,感谢您尝试提供帮助的回答。不,docker客户端正常,您可以看到日志显示容器已成功创建,如果我在容器中手动执行,一切似乎都正常。任何sh脚本都将被卡住,即使我使用了sh'ls'
Started by user iotsofttest
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /var/jenkins_home/workspace/agent-demo
[Pipeline] {
[Pipeline] withDockerServer
[Pipeline] {
[Pipeline] isUnix
[Pipeline] sh
+ docker inspect -f . python:latest
.
[Pipeline] withDockerContainer
Jenkins seems to be running inside container 5be8fc34c80a55ddcc2f5399009b97260adfc7ba9ef88985e0f7df614c707b42
but /var/jenkins_home/workspace/agent-demo could not be found among []
but /var/jenkins_home/workspace/agent-demo@tmp could not be found among []
$ docker run -t -d -u 0:0 -w /var/jenkins_home/workspace/agent-demo -v /var/jenkins_home/workspace/agent-demo:/var/jenkins_home/workspace/agent-demo:rw,z -v /var/jenkins_home/workspace/agent-demo@tmp:/var/jenkins_home/workspace/agent-demo@tmp:rw,z -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** python:latest cat
$ docker top 25dccce629d42d82b177c79544cdcd2675bad8daf94f11c55f7f9821eb6e052e -eo pid,comm
[Pipeline] {
[Pipeline] sh
process apparently never started in /var/jenkins_home/workspace/agent-demo@tmp/durable-1ddcfc03
(running Jenkins temporarily with -Dorg.jenkinsci.plugins.durabletask.BourneShellScript.LAUNCH_DIAGNOSTICS=true might make the problem clearer)
[Pipeline] }
$ docker stop --time=1 25dccce629d42d82b177c79544cdcd2675bad8daf94f11c55f7f9821eb6e052e
$ docker rm -f 25dccce629d42d82b177c79544cdcd2675bad8daf94f11c55f7f9821eb6e052e
[Pipeline] // withDockerContainer
[Pipeline] }
[Pipeline] // withDockerServer
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code -2
Finished: FAILURE
curl -fsSLO https://get.docker.com/builds/Linux/x86_64/docker-17.03.1-ce.tgz &&
tar --strip-components=1 -xvzf docker-17.03.1-ce.tgz -C /usr/local/bin
pipeline {
agent {
docker {
image 'python:latest'
label 'agent-hkgw'
}
}
stages {
stage('main') {
steps {
sh '''python --version'''
}
}
}
}