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

Windows(WSL2)下Docker Desktop数据卷挂载配置问题求助

WSL2 + Docker Desktop 绑定挂载数据卷问题解决

我有一个在MacOS上可正常运行的Docker项目,但在Windows 11的WSL2环境下使用Docker Desktop(版本4.26.1,引擎版本24.0.7)无法启动。项目包含多个镜像及一个用于启动所有服务的Compose项目,均位于同一目录。

问题核心是docker-compose.yml中$PWD变量的使用导致挂载失败:默认会出现PWD variable is not set警告,最终报错:

Error response from daemon: failed to mount local volume: mount /docker-volumes/local-mongo-data:/var/lib/docker/volumes/composer_-local-mongo-data/_data, flags: 0x1000: no such file or directory

此前尝试的无效方法:

  • 在.env文件中定义PWD变量并设置为.
  • 将变量改为${PWD}形式
  • 将路径中的/替换为\
  • 移除变量,手动指定Windows格式路径如E:\Projects\composer\docker-volumes、/E/Projects/composer/docker-volumes等
  • 使用WSL路径前缀\\wsl$\docker-desktop-data\data\docker\volumes

解决方案

1. 理解WSL2路径规则

Docker Desktop在WSL2环境下会将Windows磁盘挂载到WSL的/mnt/目录,比如Windows的E:\Projects\composer对应WSL内的/mnt/e/Projects/composer。docker-compose在WSL终端运行时,$PWD指向的是WSL内的当前工作目录,而非Windows路径。

2. 两种可行的配置方案

方案一:用相对路径替代$PWD(推荐)

直接将driver_opts中的device改为相对路径,让Docker自动解析Compose文件所在目录的绝对路径:

volumes:
  local-rabbit-data:
    driver_opts:
      type: none
      device: ./docker-volumes/local-rabbit-data
      o: bind
  local-mongo-data:
    driver_opts:
      type: none
      device: ./docker-volumes/local-mongo-data
      o: bind
  local-redis-data:
    driver_opts:
      type: none
      device: ./docker-volumes/local-redis-data
      o: bind

必须提前创建目录:确保docker-volumes及其子目录local-rabbit-data、local-mongo-data、local-redis-data已经手动创建,否则挂载会失败。

方案二:手动指定WSL格式绝对路径

如果需要用绝对路径,直接写入WSL内的路径格式:

volumes:
  local-rabbit-data:
    driver_opts:
      type: none
      device: /mnt/e/Projects/composer/docker-volumes/local-rabbit-data
      o: bind
  local-mongo-data:
    driver_opts:
      type: none
      device: /mnt/e/Projects/composer/docker-volumes/local-mongo-data
      o: bind
  local-redis-data:
    driver_opts:
      type: none
      device: /mnt/e/Projects/composer/docker-volumes/local-redis-data
      o: bind

3. 关键注意事项

  • 必须在WSL终端(如Ubuntu/WSL2的bash/zsh)中执行docker-compose up,不要使用Windows的CMD或PowerShell,避免路径解析错误。
  • 检查Docker Desktop设置:确保Settings > Resources > WSL Integration已启用当前使用的WSL发行版。
  • 若之前创建过错误卷,先执行docker-compose down -v删除旧卷,再重新启动服务。

内容的提问来源于stack exchange,提问作者Ismail Gül

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 20:00:53