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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 15:50:10