在docker集装箱中运行jenkins代理,用jenkinspipe道和/var/run/docker.socket问题

我已经创build了用于jenkins代理奴隶的图像这里是: https ://hub.docker.com/r/kondaurov/jenkins_agent/~/dockerfile/

比我运行它:

docker run -d -p 2222:22 --name=jenkins_agent -v /var/run/docker.sock:/var/run/docker.sock -v kondaurov/jenkins_agent 

然后我在jenkins中创build新节点,并通过ssh成功连接

我尝试运行这个pipe道:

 pipeline { agent { docker { label 'agent01' image 'hello-world' } } stages { stage('Compile') { steps { sh 'whoami' sh 'echo $PATH' } } } } 

agent01 – 是我的奴隶形象的容器

但是失败了..

由用户Alexander Mac重播#18开始

git rev-parse –is-inside-work-tree#timeout = 10将原点设置为https://github.com/kondaurov-scala/snippets.git git config remote.origin.url https://github.com/ kondaurov-scala / snippets.git #timeout = 10抓取原点…从原始获取上游变化git –version#timeout = 10使用GIT_SSH设置凭据git fetch –tags –progress origin + refs / heads / :refs / remotes / origin / Seen分支在repository origin / 1.1.0在repository origin / master中看到分支看到2个远程分支从5d917470103056b70398465c0d8a56b127f9e036获取Jenkinsfile节点/home/jenkins/workspace/hello_world_1.1.0-NAIZYV5H2QFOICXMDYZJM3A6XMQ4YL2QYG5ZWJDDWOEWF27RHL7Q [pipe道] {[pipe道]阶段[pipe道] {(声明:签出SCM)[pipe道]签出git rev-parse –is-inside-work-tree#timeout = 10从远程Git存储库获取更改git config remote.origin .url https://github.com/kondaurov-scala/snippets.git#timeout = 10无标签获取Fetchi ng从https://github.com/kondaurov-scala/snippets.git上传变化git –version#timeout = 10使用GIT_SSH设置凭据git fetch –no-tags –progress https://github.com/ konturov-scala / snippets.git + refs / heads / :refs / remotes / origin /检出版本5d917470103056b70398465c0d8a56b127f9e036(1.1.0)提交信息:“ref”git config core.sparsecheckout#timeout = 10 git checkout -f 5d917470103056b70398465c0d8a56b127f9e036 git rev -list 5d917470103056b70398465c0d8a56b127f9e036#timeout = 10 [Pipeline]} [Pipeline] // stage [Pipeline] withEnv [Pipeline] {[Pipeline] stage [Pipeline] {(Declarative:Agent Setup)[Pipeline] sh [hello_world_1.1.0-NAIZYV5H2QFOICXMDYZJM3A6XMQ4YL2QYG5ZWJDDWOEWF27RHL7Q]运行shell脚本+ docker pull hello-world使用默认标记:latest latest:从library / hello-world中拉出5b0f327be733:拉fs层5b0f327be733:validation校验和5b0f327be733:下载完成5b0f327be733:拉完成摘要:sha256:b2ba691d8aac9e5ac3644c0788e3d3 823f9e97f757f01d2ddc6eb5458df9d801状态:为hello-world下载较新的图片:latest [Pipeline]} [Pipeline] // stage [Pipeline] sh [hello_world_1.1.0-NAIZYV5H2QFOICXMDYZJM3A6XMQ4YL2QYG5ZWJDDWOEWF27RHL7Q]运行shell脚本+ docker inspect -f。 你好,世界 。 [pipe道] withDockerContainer agent01似乎容器c6ad60fd4215a35009accd0be49fbe1ebb583b18b12bf87ba80141b63ae9221a内进行运行,但/home/jenkins/workspace/hello_world_1.1.0-NAIZYV5H2QFOICXMDYZJM3A6XMQ4YL2QYG5ZWJDDWOEWF27RHL7Q无法之中[/var/run/docker.sock]不过的/ home /jenkins/工作区/ hello_world_1find。 1000 -w /home/jenkins/workspace/hello_world_1.1.0-NAIZYV5H2QFOICXMDYZJM3A6XMQ4YL2QYG5ZWJDDWOEWF27RHL7Q -v /家:1.0-NAIZYV5H2QFOICXMDYZJM3A6XMQ4YL2QYG5ZWJDDWOEWF27RHL7Q@tmp无法之中[/var/run/docker.sock] $搬运工运行-t -d -u 1000中find/jenkins/workspace/hello_world_1.1.0-NAIZYV5H2QFOICXMDYZJM3A6XMQ4YL2QYG5ZWJDDWOEWF27RHL7Q:/home/jenkins/workspace/hello_world_1.1.0-NAIZYV5H2QFOICXMDYZJM3A6XMQ4YL2QYG5ZWJDDWOEWF27RHL7Q:rw,z -v /home/jenkins/workspace/hello_world_1.1.0-NAIZYV5H2QFOICXMDYZJM3A6XMQ4YL2QYG5ZWJDDWOEWF27RHL7Q@tmp:/home/jenkins/workspace /hello_world_1.1.0-NAIZYV5H2QFOICXMDYZJM3A6XMQ4YL2QYG5ZWJDDWOEWF27RHL7Q@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 ******** –entrypoint cat hello-world [Pipeline] // withDockerContainer [Pipeline]} [Pipeline] // withEnv [Pipeline]} [Pipeline] //节点[Pipeline]pipe道结束java.io.IOException:无法运行图像'hello-world'。 错误:docker:来自守护进程的错误响应:oci运行时错误:container_linux.go:262:启动容器进程导致“exec:\”cat \“:在$ PATH中找不到可执行文件”。 org.jenkinsci.plugins.docker.workflow.client.DockerClient.run(DockerClient.java:138)at org.jenkinsci.plugins.docker.workflow.WithContainerStep $ Execution.start(WithContainerStep.java:179)at org.jenkinsci .plugins.workflow.cps.DSL.invokeStep(DSL.java:224)at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:150)at org.jenkinsci.plugins.workflow.cps.CpsScript .invokeMethod(CpsScript.java:108)at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:48)at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48 )在org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)at com.cloudbees.groovy.cps.sandbox.DefaultInvoker.methodCall(DefaultInvoker.java:19)at org.jenkinsci.plugins。 docker.workflow.Docker $ Image.inside(JAR:文件:/Users/Shared/Jenkins/Home/plugins/docker-workflow/WEB-INF/lib/docker-workflow.jar /组织/ jenkinsci /插件/泊坞窗/工作stream程/ Docker.groovy:128)在org.jenkinsci.plugins.do cker.workflow.Docker.node(JAR:文件:/Users/Shared/Jenkins/Home/plugins/docker-workflow/WEB-INF/lib/docker-workflow.jar /组织/ jenkinsci /插件/泊坞窗/stream程/ Docker.groovy:63)org.jenkinsci.plugins.docker.workflow.Docker $ Image.inside(jar:file:/ Users / Shared / Jenkins / Home / plugins / docker-workflow / WEB-INF / lib / docker- (jar:file:/ Users / Shared / Jenkins)(这个文件是在/usr/library/jsp/joinkins/docs/download.jar) /Home/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/agent/impl/DockerPipelineScript.groovy:57)at org.jenkinsci .plugins.pipeline.modeldefinition.agent.impl.AbstractDockerPipelineScript.configureRegistry(JAR:文件:/Users/Shared/Jenkins/Home/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar! /org/jenkinsci/plugins/pipeline/modeldefinition/agent/impl/AbstractDockerPipelineScript.groovy:68)a t org.jenkinsci.plugins.pipeline.modeldefinition.agent.impl.AbstractDockerPipelineScript.run(jar:file:/ Users / Shared / Jenkins / Home / plugins / pipeline-model-definition / WEB-INF / lib / pipeline-model- (org.jenkinsci.plugins.pipeline.modeldefinition.agent.CheckoutScript.checkoutAndRun(jar:file:/ Users / Shared) /Jenkins/Home/plugins/pipeline-model-extensions/WEB-INF/lib/pipeline-model-extensions.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/agent/CheckoutScript.groovy:60)at cps.transform (Native Method)at com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:57)at com.cloudbees.groovy.cps.impl.FunctionCallBlock $ ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:109)at com .cloudbees.groovy.cps.impl.FunctionCallBlock $ ContinuationImpl.fixArg(FunctionCallBlock.java:82)at sun.reflect.GeneratedMethodAccessor603.invoke(Unknown Source)at sun.reflect.Dele gatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:483)at com.cloudbees.groovy.cps.impl.ContinuationPtr $ ContinuationImpl.receive(ContinuationPtr.java:72) com.cloudbees.groovy.cps.impl.ClosureBlock.eval(ClosureBlock.java:46)at com.cloudbees.groovy.cps.Next.step(Next.java:83)at com.cloudbees.groovy.cps.Continuable $ 1.call(Continuable.java:174)at com.cloudbees.groovy.cps.Continuable $ 1.call(Continuable.java:163)at org.codehaus.groovy.runtime.GroovyCategorySupport $ ThreadCategoryInfo.use(GroovyCategorySupport.java:122 )在org.jenkinsci.plugins.workflow.cps的com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:163)处的org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:261)。 SandboxContinuable.access $ org.jenkinsci.plugins.workflow.cps.SandboxContinuable $(SandboxContinuable.java:19) SandboxContinuable.java:32)org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108)at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:32) org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:174)at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:330)at org.jenkinsci.plugins.workflow .cps.CpsThreadGroup.access $ 100(CpsThreadGroup.java:82)at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup $ 2.call(CpsThreadGroup.java:242)at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup $ 2。在Hudson处的java.util.concurrent.FutureTask.run(FutureTask.java:266)处的org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService $ 2.call(CpsVmExecutorService.java:64)处调用(CpsThreadGroup.java:230)。 Remoting.SingleLaneExecutorService $ 1.run(SingleLaneExecutorService.java:112)at jenkins.util.ContextResettingExecutorService $ 1.run(ContextResettingExecutorService.java:28)at java.util.conc urrent.Executors $ RunnableAdapter.call(Executors.java:511)at java.util.concurrent.FutureTask.run(FutureTask.java:266)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java .util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)at java.lang.Thread.run(Thread.java:745)Finished:FAILURE

也许是JENKINS-43590 。

我的一般build议是:如果Image.inside在你第一次尝试的时候运行,那就太棒了。 如果没有的话,不要浪费时间去努力工作。 自己运行docker命令,在Jenkins之外预先testing。