Windows环境下如何在Docker Compose绑定挂载中使用WSL2 Ubuntu文件系统
解答
首先确认:完全可以在docker-compose.yml中配置绑定挂载WSL2发行版内的内容,你遇到的问题是配置语法错误和路径规则适配问题,根据你执行命令的环境分为两种适配方案:
方案1:在Windows侧(PowerShell/CMD)执行docker compose命令
你之前的配置仅缺少路径的闭合引号,调整后即可正常使用:
volumes: app_files: driver: local driver_opts: type: none o: bind device: "//wsl$/Ubuntu-20.04/home/dev/app"
注意事项:执行命令前需要确保WSL2的Ubuntu-20.04发行版处于运行状态,且在Windows资源管理器中输入\\wsl$\Ubuntu-20.04\home\dev\app可以正常访问对应目录。
方案2(性能更优):在WSL2 Ubuntu侧执行docker compose命令
该方案避免跨Windows/WSL文件系统的IO损耗,性能提升非常明显,操作步骤如下:
- 打开Docker Desktop设置,进入「Resources」-「WSL Integration」,开启Ubuntu-20.04发行版的集成开关,保存后重启Docker生效
- 你可以选择将docker-compose.yml放到WSL2的文件系统中,也可以继续使用存放在Windows文件系统的配置(在WSL中通过
/mnt/盘符/路径访问Windows文件) - 在WSL2 Ubuntu终端中执行docker compose命令,此时绑定挂载可以直接使用WSL内的绝对路径,无需走
wsl$网络路径:
volumes: app_files: driver: local driver_opts: type: none o: bind device: "/home/dev/app"
如果是直接给服务配置绑定挂载而非定义命名卷,写法更简化:
services: 你的服务名: volumes: - /home/dev/app:/容器内目标挂载路径
内容的提问来源于stack exchange,提问作者André Inocenti
相关产品推荐
相关产品推荐

