WSL2环境下Docker卷共享未启用问题求助
问题详情
系统环境
- 操作系统:Windows 11
- Docker 底层系统:Ubuntu 20.04.1 LTS
- Docker Desktop 版本:4.37.1 (178610)
- .NET 版本:8.0
已启用的Windows功能
- Windows Hypervision Platform
- Windows Subsystem for Linux
操作背景
进入Ubuntu Docker镜像后执行了apt-update命令
报错信息
活动错误:Volume sharing is not enabled。需在Docker Desktop设置界面点击Resources -> Shared Drives,选择包含项目文件的驱动器或文件夹。错误来自文件C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Sdks\Microsoft.Docker.Sdk\build\Microsoft.VisualStudio.Docker.Compose.targets第569行
相关docker-compose配置
networks: servicenetwork: driver: bridge rabbitmq_go_net: driver: bridge services: platformdb: container_name: platformdb image: mcr.microsoft.com/mssql/server:2022-latest ports: - 8002:1433 environment: - ACCEPT_EULA=Y - MSSQL_SA_PASSWORD=P@sword1- networks: - servicenetwork volumes: - type: volume source: sqldata target: /var/opt/mssql healthcheck: test: ["CMD-SHELL", "echo 'SELECT 1' | /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P $$(MSSQL_SA_PASSWORD) || exit 1"] interval: 10s retries: 6 start_period: 20s rabbitmq: container_name: rabbitmq image: rabbitmq:3-management-alpine ports: - 5672:5672 - 15672:15672 volumes: - rabbitmq_data:/var/lib/rabbitmq appname.serviceone.api: container_name: appnameServiceoneApi image: ${DOCKER_REGISTRY-}appnameserviceoneapi build: context: . dockerfile: appname.ServiceOne.API/Dockerfile ports: - 8001:8080 depends_on: - platformdb environment: - RUNNING_IN_DOCKER=true - DB_HOST=platformdb - DB_NAME=appname.ServiceOneDb - DB_SA_PASSWORD=P@sword1- networks: - servicenetwork - rabbitmq_go_net volumes: - .:/app - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro appname.servicetwo.api: container_name: dodisUserserApi image: ${DOCKER_REGISTRY-}appnameservicetwoapi build: context: . dockerfile: appname.ServiceTwo.API/Dockerfile ports: - 5000:8382 depends_on: - platformdb environment: - RUNNING_IN_DOCKER=true - DB_HOST=platformdb - DB_NAME=appname.PlatformTwo - DB_SA_PASSWORD=P@sword1- networks: - servicenetwork - rabbitmq_go_net volumes: - .:/app - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro volumes: sqldata: rabbitmq_data:
解决方案
1. 启用Docker Desktop文件共享
- 打开Docker Desktop,点击右上角齿轮图标进入设置
- 切换到Resources -> File Sharing(旧版为Shared Drives)
- 勾选包含项目文件的驱动器(例如项目在C盘则勾选C:)
- 点击Apply & Restart,等待Docker重启完成
2. 验证WSL集成配置
因已启用WSL功能,需确认Docker与WSL的集成状态:
- 在Docker Desktop设置中进入Resources -> WSL Integration
- 勾选正在使用的Ubuntu发行版,保存后重启Docker
- 验证WSL中可正常访问Windows驱动器(路径为
/mnt/[盘符],例如/mnt/c)
3. 检查绑定挂载路径
服务配置中使用了- .:/app这类绑定挂载,需确保:
- 执行
docker-compose命令的目录位于已共享的驱动器下 - 路径无特殊字符、空格或权限限制
4. 重置Docker(极端情况)
若以上步骤无效,可尝试重置Docker Desktop:
- 进入设置 -> Troubleshoot -> Reset to factory defaults
- 重置完成后重新配置文件共享与WSL集成
内容的提问来源于stack exchange,提问作者Rens Jespers
相关产品推荐
相关产品推荐

