Java – Jenkins: unable to run the program “docker”: error = 2, there is no such file or directory
I installed Jenkins on my local machine, which runs on MacOS High Sierra and installs docker I'm trying to run a simple pipeline example using docker I added the following lines to the pipeline:
pipeline { agent { docker { image 'node:7-alpine' } } stages { stage('Test') { steps { sh 'node --version' } } } }
Then from the WebGui, I now click build, and it failed The console output displays the following errors:
java.io.IOException: error=2,No such file or directory at java.lang.UNIXProcess.forkAndExec(Native Method) at java.lang.UNIXProcess.<init>(UNIXProcess.java:247) at java.lang.ProcessImpl.start(ProcessImpl.java:134) at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) at hudson.Proc$LocalProc.<init>(Proc.java:249) at hudson.Proc$LocalProc.<init>(Proc.java:218) at hudson.Launcher$LocalLauncher.launch(Launcher.java:929) at hudson.Launcher$ProcStarter.start(Launcher.java:449) at org.jenkinsci.plugins.docker.workflow.client.DockerClient.launch(DockerClient.java:296) at org.jenkinsci.plugins.docker.workflow.client.DockerClient.launch(DockerClient.java:277) at org.jenkinsci.plugins.docker.workflow.client.DockerClient.launch(DockerClient.java:274) at org.jenkinsci.plugins.docker.workflow.client.DockerClient.version(DockerClient.java:246) at org.jenkinsci.plugins.docker.workflow.WithContainerStep$Execution.start(WithContainerStep.java:141) at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:229) at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:153) at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:122) at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:48) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) at com.cloudbees.groovy.cps.sand@R_902_2419@.DefaultInvoker.methodCall(DefaultInvoker.java:20) Caused: java.io.IOException: Cannot run program "docker": error=2,No such file or directory at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) at hudson.Proc$LocalProc.<init>(Proc.java:249) at hudson.Proc$LocalProc.<init>(Proc.java:218) at hudson.Launcher$LocalLauncher.launch(Launcher.java:929) at hudson.Launcher$ProcStarter.start(Launcher.java:449) at org.jenkinsci.plugins.docker.workflow.client.DockerClient.launch(DockerClient.java:296) at org.jenkinsci.plugins.docker.workflow.client.DockerClient.launch(DockerClient.java:277) at org.jenkinsci.plugins.docker.workflow.client.DockerClient.launch(DockerClient.java:274) at org.jenkinsci.plugins.docker.workflow.client.DockerClient.version(DockerClient.java:246) at org.jenkinsci.plugins.docker.workflow.WithContainerStep$Execution.start(WithContainerStep.java:141) at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:229) at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:153) at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:122) at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:48) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) at com.cloudbees.groovy.cps.sand@R_902_2419@.DefaultInvoker.methodCall(DefaultInvoker.java:20) at org.jenkinsci.plugins.docker.workflow.Docker$Image.inside(jar:file:/Users/coder/.jenkins/plugins/docker-workflow/WEB-INF/lib/docker-workflow.jar!/org/jenkinsci/plugins/docker/workflow/Docker.groovy:135) at org.jenkinsci.plugins.docker.workflow.Docker.node(jar:file:/Users/coder/.jenkins/plugins/docker-workflow/WEB-INF/lib/docker-workflow.jar!/org/jenkinsci/plugins/docker/workflow/Docker.groovy:66) at org.jenkinsci.plugins.docker.workflow.Docker$Image.inside(jar:file:/Users/coder/.jenkins/plugins/docker-workflow/WEB-INF/lib/docker-workflow.jar!/org/jenkinsci/plugins/docker/workflow/Docker.groovy:123) at org.jenkinsci.plugins.pipeline.modeldeFinition.agent.impl.DockerPipelineScript.runImage(jar:file:/Users/coder/.jenkins/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:file:/Users/coder/.jenkins/plugins/pipeline-model-deFinition/WEB-INF/lib/pipeline-model-deFinition.jar!/org/jenkinsci/plugins/pipeline/modeldeFinition/agent/impl/AbstractDockerPipelineScript.groovy:74) at org.jenkinsci.plugins.pipeline.modeldeFinition.agent.impl.AbstractDockerPipelineScript.run(jar:file:/Users/coder/.jenkins/plugins/pipeline-model-deFinition/WEB-INF/lib/pipeline-model-deFinition.jar!/org/jenkinsci/plugins/pipeline/modeldeFinition/agent/impl/AbstractDockerPipelineScript.groovy:52) at org.jenkinsci.plugins.pipeline.modeldeFinition.agent.CheckoutScript.checkoutAndRun(jar:file:/Users/coder/.jenkins/plugins/pipeline-model-extensions/WEB-INF/lib/pipeline-model-extensions.jar!/org/jenkinsci/plugins/pipeline/modeldeFinition/agent/CheckoutScript.groovy:66) at org.jenkinsci.plugins.pipeline.modeldeFinition.agent.CheckoutScript.doCheckout(jar:file:/Users/coder/.jenkins/plugins/pipeline-model-extensions/WEB-INF/lib/pipeline-model-extensions.jar!/org/jenkinsci/plugins/pipeline/modeldeFinition/agent/CheckoutScript.groovy:42) at org.jenkinsci.plugins.pipeline.modeldeFinition.agent.impl.LabelScript.run(jar:file:/Users/coder/.jenkins/plugins/pipeline-model-deFinition/WEB-INF/lib/pipeline-model-deFinition.jar!/org/jenkinsci/plugins/pipeline/modeldeFinition/agent/impl/LabelScript.groovy:44) 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.GeneratedMethodAccessor192.invoke(UnkNown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72) at 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) at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:261) at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:163) at org.jenkinsci.plugins.workflow.cps.Sand@R_902_2419@Continuable.access$101(Sand@R_902_2419@Continuable.java:34) at org.jenkinsci.plugins.workflow.cps.Sand@R_902_2419@Continuable.lambda$run0$0(Sand@R_902_2419@Continuable.java:59) at org.jenkinsci.plugins.scriptsecurity.sand@R_902_2419@.groovy.GroovySand@R_902_2419@.runInSand@R_902_2419@(GroovySand@R_902_2419@.java:108) at org.jenkinsci.plugins.workflow.cps.Sand@R_902_2419@Continuable.run0(Sand@R_902_2419@Continuable.java:58) at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:174) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:332) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$200(CpsThreadGroup.java:83) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:244) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:232) at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:64) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:131) at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28) at java.util.concurrent.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
Why is that? In the Jenkins documentation, they only provide this syntax and do not mention anything else
Solution
I have the same problem as above I'm not sure my situation is exactly the same as yours; DR is the path variable that you need to ensure that docker can be used by Jenkins In particular, for the one that it starts, you can see – > Manage Jenkins – > system information under Jenkins home
As far as I'm concerned, I installed Jenkins. Com on the Mac and through homebrew To solve this problem, I edited / usr / local / opt / Jenkins LTS / homebrew mxcl. jenkins-lts. Plist file and change it to the following:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>homebrew.mxcl.jenkins-lts</string> <key>ProgramArguments</key> <array> <string>/usr/libexec/java_home</string> <string>-v</string> <string>1.8</string> <string>--exec</string> <string>java</string> <string>-Dmail.smtp.starttls.enable=true</string> <string>-jar</string> <string>/usr/local/opt/jenkins-lts/libexec/jenkins.war</string> <string>--httpListenAddress=127.0.0.1</string> <string>--httpPort=8080</string> </array> <key>EnvironmentVariables</key> <dict> <key>PATH</key> <string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string> </dict> <key>RunAtLoad</key> <true/> </dict> </plist>
The important parts here are:
<key>EnvironmentVariables</key> <dict> <key>PATH</key> <string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string> </dict>
In my example, docker is available in / usr / local / bin