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

Windows Docker Desktop中Jenkins容器无法调用Docker命令求助

解决Windows Docker Desktop下Jenkins容器执行Docker命令的问题

核心原因

Windows Docker Desktop基于WSL2后端运行,和原生Linux环境的Docker路径、二进制文件格式存在本质差异:

  • 你之前挂载的/usr/bin/docker是Windows系统的Docker客户端(EXE格式),无法在Linux Jenkins容器中运行
  • Docker守护进程的Unix套接字docker.sock实际位于WSL2发行版的文件系统中,直接挂载Windows路径会出现权限或格式错误

解决步骤

1. 确认Docker Desktop的WSL2后端已启用

打开Docker Desktop设置 -> 资源 -> WSL集成,确保已启用对应WSL2发行版(比如Ubuntu)的集成,并且默认使用WSL2作为运行后端。

2. 修改Docker Compose配置

不需要挂载宿主机的docker二进制文件,而是在Jenkins容器内安装Linux版本的Docker CLI。推荐两种实现方式:

方式一:自定义Dockerfile构建Jenkins镜像(长期稳定用)

创建Dockerfile文件:

FROM jenkins/jenkins:lts
USER root

# 安装Docker CLI依赖及二进制文件
RUN apt-get update && apt-get install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common && \
    curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - && \
    add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/debian \
    $(lsb_release -cs) \
    stable" && \
    apt-get update && apt-get install -y docker-ce-cli

# 若后续切换为jenkins用户运行,需将其加入docker组避免权限问题
RUN usermod -aG docker jenkins
USER jenkins

修改compose.yaml:

version: '3.8'
services:
    jenkins:
      build: .
      privileged: true
      user: root # 也可改为jenkins,前提是Dockerfile中已将用户加入docker组
      ports:
        - 8080:8080
        - 50000:50000
      volumes:
        - jenkins-data:/var/jenkins_home
        - /var/run/docker.sock:/var/run/docker.sock

volumes:
  jenkins-data:
方式二:启动容器后手动安装Docker CLI(临时测试用)

先启动去掉/usr/bin/docker挂载的原配置容器,再进入容器执行安装命令:

docker exec -it <jenkins容器名称> /bin/bash

在容器内执行:

apt-get update && apt-get install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/debian \
    $(lsb_release -cs) \
    stable"
apt-get update && apt-get install -y docker-ce-cli

3. 验证Docker命令可用性

安装完成后,在容器内执行:

docker -v

正常情况下会输出Docker版本信息。

关键注意点

  • 禁止挂载Windows系统的docker二进制文件到Linux容器,两者架构、格式不兼容
  • 确保/var/run/docker.sock挂载正确,Windows Docker Desktop会自动映射WSL2的套接字到该路径
  • 若使用非root用户运行Jenkins,必须将用户加入docker组,否则会出现权限拒绝错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 06:25:02