You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacBook M1 Pro上Jenkins提示docker: command not found问题求助

解决M1 Pro上Brew安装的Jenkins找不到Docker的问题

核心原因

Brew安装的Jenkins默认以jenkins系统用户运行,该用户既没有访问Docker可执行文件的环境变量路径,也可能缺少访问Docker服务的权限;加上M1架构下Docker Desktop的路径特性,导致Jenkins无法定位到docker命令。

解决步骤

1. 确认Docker可执行文件路径

在Mac终端执行以下命令,获取Docker的安装路径:

which docker

M1 Pro上Docker Desktop的默认输出通常是/usr/local/bin/docker或/Applications/Docker.app/Contents/Resources/bin/docker。

2. 配置Jenkins的环境变量

Brew安装的Jenkins配置文件位于/usr/local/opt/jenkins/homebrew.mxcl.jenkins.plist,编辑该文件添加Docker路径到PATH:

<?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</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/libexec/java_home</string>
    <string>-v</string>
    <string>17</string>
    <string>--exec</string>
    <string>java</string>
    <string>-Dmail.smtp.starttls.enable=true</string>
    <string>-jar</string>
    <string>/usr/local/opt/jenkins/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:/Applications/Docker.app/Contents/Resources/bin</string>
  </dict>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

将PATH值替换为包含你之前查到的Docker路径的内容,然后重启Jenkins服务:

brew services restart jenkins

3. 确保Jenkins用户能访问Docker服务

Mac上Docker Desktop的socket默认位于用户目录下,系统用户jenkins无法直接访问。可以创建全局软链接并调整权限:

# 创建软链接到全局路径
sudo ln -s ~/Library/Containers/com.docker.docker/Data/docker.sock /var/run/docker.sock
# 赋予全局可读可写权限(注意:此操作降低安全性,仅用于测试或非生产环境)
sudo chmod 666 /var/run/docker.sock

4. 配置Jenkins全局工具(可选)

进入Jenkins后台 → 系统管理 → 全局工具配置,找到Docker配置项:

  • 直接指定Docker的安装路径(如/usr/local/bin/docker)
  • 保存配置后,Jenkins会优先使用该路径的Docker命令

5. 验证Docker可用性

修改你的Pipeline,添加测试步骤确认Docker是否可访问:

pipeline {
agent any
environment {
DOCKERHUB_CREDENTIALS = credentials('dh_cred')
}

triggers {
pollSCM('*/5 * * * *') // Vérifier toutes les 5 minutes
}
stages {
stage('Test Docker'){
    steps {
        sh 'which docker'
        sh 'docker --version'
    }
}
stage('Checkout'){
agent any
steps{
checkout scm
}
}
// 其他阶段保持不变...
}
}

运行Pipeline,查看测试阶段的输出,确认Docker命令可正常执行。

额外提示

  • 确保Docker Desktop在后台正常运行,M1架构下Docker服务需要启动才能响应命令
  • 若使用Docker插件的容器化代理(如agent { docker { ... } }),需在插件配置中指定正确的Docker路径

内容的提问来源于stack exchange,提问作者sami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 06:25:22