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

Docker挂载WSL2目录权限报错 VS Code远程容器不显示挂载文件

问题背景
  • 初始创建LEMP容器执行的命令如下:
docker run -p 8081:80 -v $(pwd)/lemp1:/var/www/html --name lemp1 -d adhocore/lemp:8.1
  • 开发工作基于WSL2环境下的lemp1目录开展,通过Windows文件管理器访问WSL路径下的lemp1文件夹创建文件/目录时触发权限拒绝,报错信息:
PS Microsoft.PowerShell.Core\FileSystem::\\wsl.localhost\Ubuntu-22.04\home\myuser\development\lemp1> mkdir sdsdf
New-Item: Access to the path '\\wsl.localhost\Ubuntu-22.04\home\myuser\development\lemp1\sdsdf' is denied.
PS Microsoft.PowerShell.Core\FileSystem::\\wsl.localhost\Ubuntu-22.04\home\myuser\development\lemp1>
  • VS Code通过远程容器模式连接lemp1容器时,仅能看到.composer、.vscode-server两个默认文件夹,无法查看挂载目录下的开发文件,手动创建的wow目录位于默认家目录下,不是目标挂载路径。
  • 容器内通过docker exec进入shell创建的文件/目录,Windows侧同样无法访问,需要实现Windows文件资源管理器、VS Code两端都能正常读写挂载目录,支撑日常开发。
问题根因
  • 权限UID/GID不匹配:adhocore/lemp:8.1镜像内运行Nginx、PHP-FPM服务的默认用户为www-data,对应UID/GID为33,容器启动后会自动将挂载的/var/www/html目录所有者修改为33:33;而WSL2中登录的普通用户myuser默认UID/GID为1000,两边用户ID不一致,导致WSL/Windows侧无目录读写权限。
  • VS Code打开路径错误:远程连接容器时,默认打开的是root用户家目录/root,该目录仅存放远程服务相关的默认文件,并非挂载的开发目录路径。
解决步骤

修复目录权限,打通Windows/WSL侧访问

  1. 打开WSL2的Ubuntu终端,切换到lemp1目录的上级路径:cd /home/myuser/development
  2. 停止当前运行的旧容器:docker stop lemp1
  3. 递归重置lemp1目录的所有者为当前WSL用户,恢复基础读写权限:
sudo chown -R $(id -u):$(id -g) ./lemp1
sudo chmod -R 755 ./lemp1
  1. 删除旧容器,启动新容器时传入当前WSL用户的UID/GID参数,让容器内服务用户和WSL侧用户ID保持一致,避免后续权限被自动修改:
docker rm lemp1
docker run -p 8081:80 \
-e WWWUSER=$(id -u) \
-e WWWGROUP=$(id -g) \
-v $(pwd)/lemp1:/var/www/html \
--name lemp1 \
-d adhocore/lemp:8.1

说明:adhocore/lemp镜像原生支持WWWUSER、WWWGROUP环境变量,传入后会自动将容器内www-data用户的UID/GID修改为指定值,保证容器服务、WSL用户、Windows访问三者对挂载目录的权限一致。

  1. 操作完成后,直接从Windows文件资源管理器访问WSL网络路径下的lemp1目录,即可正常新建、修改、删除文件,容器内生成的文件也会同步在Windows侧可见。

配置VS Code正确访问挂载开发目录

  1. 确保已安装VS Code的Dev Containers扩展,通过扩展连接到运行中的lemp1容器
  2. 连接成功后,点击左侧资源管理器面板的「打开文件夹」按钮,输入挂载目录的绝对路径/var/www/html,点击确认
  3. 重载窗口后即可看到lemp1目录下的所有开发文件,和Windows/WSL侧文件实时同步,支持直接编辑、断点调试,不会再出现仅显示默认文件夹的问题。

验证标准

  • Windows文件资源管理器访问对应WSL路径时,可自由创建、编辑、删除lemp1目录下的内容,无权限报错
  • VS Code远程连接容器后打开/var/www/html路径,文件和本地完全同步,编辑后实时生效
  • 容器内Nginx、PHP-FPM服务对挂载目录有正常读写权限,访问Web服务不会出现403权限错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:51:21