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

Jenkins容器无法调用Docker:命令未找到及Pipeline执行失败问题

解决Jenkins容器调用宿主机Docker的问题(Windows 10)

一、修正docker-compose配置

1. 更换带Docker客户端的Jenkins镜像

官方jenkins/jenkins:lts默认未预装Docker客户端,改用jenkinsci/blueocean:latest镜像,该镜像已内置Docker客户端,满足仅调用宿主机Docker daemon、不在容器内安装Docker服务的需求。

2. 修正Windows 10专属的docker.sock挂载路径

Windows 10下Docker Desktop使用WSL2后端时,需用双斜杠前缀的路径挂载docker.sock,确保容器能正确访问宿主机的Docker套接字。

3. 调整容器用户权限

以root用户启动容器,避免因权限不足无法访问docker.sock的问题。

修改后的docker-compose.yml:

networks:
  myjen:
    external: false

services:
  jenkins:
    image: jenkinsci/blueocean:latest
    ports:
      - 8080:8080
      - 50000:50000
    volumes:
      - .jenkins-docker-certs:/certs/client
      - .jenkins-data:/var/jenkins_home
      - //var/run/docker.sock:/var/run/docker.sock
    networks:
      - myjen
    user: root
    environment:
      - DOCKER_HOST=unix:///var/run/docker.sock

二、验证容器内Docker可用性

重新启动容器后,进入容器执行命令验证:

# 重启容器
docker-compose down && docker-compose up -d

# 进入容器
docker exec -it <容器ID> /bin/bash

# 验证Docker客户端
docker --version

若能正常输出Docker版本信息,说明客户端配置成功。

三、调整Pipeline配置(可选)

若原有Pipeline仍存在问题,可显式指定Docker主机参数:

pipeline {
    agent {
        docker { 
            image 'mcr.microsoft.com/dotnet/sdk:7.0'
            args '-v /var/run/docker.sock:/var/run/docker.sock'
        }
    }
    stages {
        stage('Test') {
            steps {
                sh 'dotnet --version'
            }
        }
    }
}

关键说明

  • 不换镜像的替代方案:若坚持使用jenkins/jenkins:lts,可手动在容器内下载Docker客户端二进制文件,但jenkinsci/blueocean镜像更便捷。
  • Windows路径特殊处理:双斜杠前缀是Windows系统适配WSL2路径的要求,确保挂载的docker.sock能被容器识别。
  • 权限问题:root用户启动是最直接解决套接字权限不足的方式,若需非root运行,需额外配置容器内jenkins用户加入docker组,步骤相对繁琐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 03:42:16