MacOS High Sierra下Jenkins调用Docker失败:找不到docker程序
解决MacOS High Sierra上Jenkins Docker Pipeline报错:Cannot run program "docker"
Hey,我看你在MacOS High Sierra上运行Jenkins Docker Pipeline的时候遇到了「找不到docker命令」的报错,这个问题我之前帮朋友解决过,其实就是Jenkins的运行环境没包含Docker的路径,下面给你详细的解决方案:
问题场景回顾
你使用的Pipeline代码如下:
pipeline { agent { docker { image 'node:7-alpine' } } stages { stage('Test') { steps { sh 'node --version' } } } }
点击「立即构建」后任务失败,核心错误提示是:
Cannot run program "docker": error=2, No such file or directory
问题根源
MacOS上Docker的二进制文件默认存放在/usr/local/bin/docker,但Jenkins启动时的环境变量PATH里并没有包含这个目录,导致Jenkins的运行用户找不到docker命令。
两种可行的解决方法
方法一:修改Jenkins启动配置文件(适合Homebrew安装的Jenkins)
- 打开Jenkins的plist配置文件,路径为
/usr/local/opt/jenkins/homebrew.mxcl.jenkins.plist - 在
<array>标签(存放PATH路径的区域)中添加一行<string>/usr/local/bin</string>,最终这部分代码如下:<array> <string>/usr/local/bin</string> <string>/usr/bin</string> <string>/bin</string> <string>/usr/sbin</string> <string>/sbin</string> </array> - 重启Jenkins服务:
brew services restart jenkins
方法二:在Jenkins WebUI配置全局环境变量(更直观,适合不想修改配置文件的情况)
- 登录Jenkins后台,点击「Manage Jenkins」→「Configure System」
- 找到「Global properties」板块,勾选「Environment variables」
- 添加一个新的环境变量:
- 变量名:
PATH - 变量值:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin(重点是要包含/usr/local/bin)
- 变量名:
- 点击「Save」保存配置,重新运行Pipeline任务即可
验证配置是否生效
你可以在Pipeline中添加测试步骤,确认Docker能正常调用:
pipeline { agent { docker { image 'node:7-alpine' } } stages { stage('Check Docker') { steps { sh 'which docker' sh 'docker --version' } } stage('Test') { steps { sh 'node --version' } } } }
如果能输出Docker的路径和版本信息,说明问题已经解决。
内容的提问来源于stack exchange,提问作者Happy Coder
相关产品推荐
相关产品推荐

