Jenkins的工作在执行docker image作为代理程序时陷入困境

时间:2019-10-24 17:46:52

标签: docker jenkins jenkins-pipeline jenkins-plugins jenkins-declarative-pipeline

我已经在虚拟机中安装了Jenkins和Docker。我正在使用Jenkins管道项目,而我的jenkins声明式管道如下所示。

pipeline {
    agent {
        docker { image 'node:7-alpine' }
    }
    stages {
        stage('Test') {
            steps {
                echo 'Hello Nodejs'
                sh 'node --version'
            }
        }
    }
}

此链接https://jenkins.io/doc/book/pipeline/docker/后的一条非常基本的管道

当我尝试构建我的詹金斯工作时,它会打印Hello Nodejs,但会卡在下一条指令(即执行shell命令)上。 5分钟后,作业失败并显示此错误

process apparently never started in /var/lib/jenkins/workspace/MyProject@tmp/durable-c118923c
(running Jenkins temporarily with -Dorg.jenkinsci.plugins.durabletask.BourneShellScript.LAUNCH_DIAGNOSTICS=true might make the problem clearer)
ERROR: script returned exit code -2

我不明白为什么它不执行sh命令。

This is the screenshot of console output

如果我将其设置为agent any,它将执行sh命令。

谢谢。

1 个答案:

答案 0 :(得分:0)

我不确定是否会有所帮助,但我记得默认情况下在根帐户下启动了节点映像。 Jenkins在启动容器时使用自己的ID。因此,可能是权限问题。尝试添加 -u 0 参数:

agent {
    docker {
        image 'node:7-alpine'
        args '-u 0'
    }
}