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

WSL2+Docker Desktop环境下配置Jenkins容器挂载Docker二进制文件被识别为目录的问题求助

WSL2+Docker Desktop环境下配置Jenkins容器挂载Docker二进制文件被识别为目录的问题求助

各位好,我现在遇到一个WSL2+Docker Desktop环境下的Jenkins配置问题,想请大家帮忙看看:

之前在Linux机器上,我用这条命令就能成功部署Jenkins,让它能调用宿主机的Docker跑流水线:

sudo docker run -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):$(which docker) jenkins/jenkins:lts-jdk17

原理就是挂载宿主机的docker.sock和Docker可执行文件到容器里,当时还得给socket设666权限,不过那是临时PC环境,没什么问题。

现在我们的正式服务器是Windows系统,我装了Docker Desktop并启用了WSL2后端。但在Windows上照搬Linux的命令时发现,挂载WSL里的/usr/local/bin/docker到容器里时,这个文件会被识别成目录,Jenkins根本没法执行它。

我试过不少方法,跟大家说说过程:

  • 一开始Linux命令直接失败后,我搜了旧帖子,试了给socket路径加双斜杠:-v //var/run/docker.sock:/var/run/docker.sock
  • 还有人说把宿主机的/usr/local/bin/docker挂到容器的/usr/bin/docker,但也没解决问题
  • 现在我用的命令是:
docker run --name jenkins -p 8080:8080 -v //var/run/docker.sock:/var/run/docker.sock -v //usr/local/bin/docker:/usr/local/bin/docker jenkins/jenkins:lts-jdk17

进容器里查看的话,/usr/local/bin/docker显示是个目录:

drwxr-xr-x 2 root root 40 Aug 27 11:20 docker

为了排查问题,我做了个测试:在WSL里创建了一个普通文件/usr/local/bin/hello.txt,然后把它挂载到容器的/usr/local/bin/docker位置,结果进容器看,这个docker还是目录,而且里面的hello.txt也被识别成了目录!更奇怪的是,这些被识别成目录的项大小都是40,和空目录的大小一样。

还有几个诡异的现象:

  • docker.sock的挂载是正常的,进容器看是socket文件,能正常用
  • 我在WSL的文件系统里找不到/var/run/docker.sock,但它确实能被挂载到容器里
  • 如果挂载一个不存在的文件,Docker也会自动创建成目录

现在我最核心的问题是:怎么才能让Docker在WSL2+Docker Desktop环境下,把宿主机的Docker二进制文件(或者任意普通文件)正确挂载成文件,而不是目录? 另外,如果有关于在这个环境下实现Docker-outside-Docker(让容器调用宿主机Docker)的通用经验或者正确姿势,也欢迎大家分享!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 03:08:43