Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Jenkins在远程docker代理中运行sh卡滞 问题_Linux_Docker_Jenkins_Docker Compose_Jenkins Pipeline - Fatal编程技术网

Linux Jenkins在远程docker代理中运行sh卡滞 问题

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

我配置了一个远程docker实例(在服务器a上),它启用
tcp://server_a:2376
为API提供服务

我在服务器B上部署了一个Jenkins服务器,使用(Docker
jenkinsci/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容器在shbash中具有所有适当的路径


最后,确保用于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

在两个Jenkins master/agent容器中,我将
/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'''
            }
            
        }
    }
}