You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

在WSL上的IntelliJ IDEA中配置Dev Container实现Docker Out of Docker时,工作区目录挂载失败的问题求助

在WSL上的IntelliJ IDEA中配置Dev Container实现Docker Out of Docker时,工作区目录挂载失败的问题求助

大家好,我最近碰到了一个Dev Container配置的棘手问题,折腾了好一阵没搞定,想请教下有没有朋友有解决方案:

场景背景

我在WSL Ubuntu环境里维护一个项目,平时用IntelliJ IDEA打开开发。最近想把项目转到Dev Container里跑,同时要实现Docker Out of Docker的效果——也就是把宿主WSL的/var/run/docker.sock挂载到容器里,这样就能在Dev Container内部直接调用宿主的Docker服务,甚至用docker-compose重新创建外部依赖容器。

遇到的具体问题

我按照Docker Out of Docker的官方配置建议,在devcontainer.json里加了工作区挂载和相关配置:

{
  "workspaceFolder": "${localWorkspaceFolder}",
  "workspaceMount": "source=${localWorkspaceFolder},target=${localWorkspaceFolder},type=bind",
  "onCreateCommand": "pwd",
  "mounts": [
    "source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind,consistency=cached"
  ]
}

结果容器启动直接失败,日志里报了两个关键错误:

OCI runtime exec failed: exec failed: unable to start container process: chdir to cwd ("/wsl.localhost/Ubuntu/path/to/my/project") set in config.json failed: no such file or directory

为了调试我加了onCreateCommand: "pwd",又得到另一个错误:

Lifecycle script command: 'pwd' is failed with exit code: 127

我排查到的细节

后来我发现问题根源在localWorkspaceFolder这个变量的解析上——它被IntelliJ/Dev Container插件解析成了完整的WSL外部访问路径/wsl.localhost/Ubuntu/path/to/my/project,而不是WSL内部的项目路径/path/to/my/project。容器内部根本不存在/wsl.localhost这个目录,自然会报错找不到工作区。

我搜了一些相关的问题案例,但目前还没找到可行的解决办法。另外Docker Socket的挂载是正常的,核心卡壳点就在于工作区目录的路径不匹配。

我的核心需求

想请教下:怎么正确配置Dev Container的工作区挂载,让容器能正确识别并进入我的WSL项目目录?或者有没有办法调整localWorkspaceFolder的解析规则,让它只返回WSL内部的相对路径?希望解决这个问题的同时,不影响Docker Out of Docker的功能正常使用。

火山引擎 最新活动