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

升级Win10后Docker for Windows挂载卷仅含文件夹无文件求助

解决Hyper-V Docker Machine卷挂载仅显示文件夹无文件的问题

我之前从Docker Toolbox转用Hyper-V的Docker Machine时,也碰到过一模一样的问题——hello-world跑起来没问题,但挂载卷就只出文件夹,文件死活看不到,还没任何报错,简直摸不着头脑!下面是我试过的几个有效解决方法,你可以挨个试试:

  • 检查挂载路径的格式是否正确
    Windows本地路径在Docker命令里不能直接用Windows的反斜杠,得换成正斜杠或者转义反斜杠。比如你要挂载C:\dev\my-app,正确的写法应该是:

    docker run -v /c/dev/my-app:/app <image-name>
    # 或者用转义反斜杠
    docker run -v C:\\dev\\my-app:/app <image-name>
    

    另外要注意,Hyper-V的Docker Machine默认只能访问C:盘的文件,如果你的文件在其他盘符,需要额外配置共享。

  • 确认Hyper-V虚拟机的文件共享权限

    1. 打开Hyper-V管理器,找到你的Docker Machine虚拟机(一般叫default),右键选择「设置」;
    2. 左侧菜单选「集成服务」,确保「文件共享」是勾选启用的;
    3. 回到Windows本地,找到你要挂载的文件夹,右键「属性」->「共享」,添加「Everyone」用户并赋予读写权限(测试阶段可以这么弄,之后再改回更严格的权限)。
  • 重新创建Docker Machine并指定共享目录
    如果之前的虚拟机配置有问题,干脆删掉重建,创建时直接指定要共享的目录,避免后续麻烦:

    # 先删掉旧的虚拟机
    docker-machine rm default
    # 创建新的虚拟机,同时共享C盘的指定目录
    docker-machine create -d hyperv --hyperv-share c:/dev default
    

    这样创建的虚拟机自动把C:\dev共享到虚拟机内的/dev路径,挂载时直接用/dev/my-app就行。

  • 检查容器内的文件权限
    有时候文件已经挂载成功,但容器内的运行用户没有读取权限。你可以进入容器查看:

    docker exec -it <你的容器ID> bash
    # 查看挂载目录的权限
    ls -l /app
    

    如果权限不对,可以在启动容器时加上--user root参数,临时用root用户运行,或者调整本地文件的权限,让Hyper-V能正常读取。

  • 验证Docker Machine内的共享状态
    用命令进入Docker Machine虚拟机,检查共享目录是否正常挂载:

    docker-machine ssh default
    # 查看C盘的共享内容
    ls /mnt/c/dev
    

    如果这里看不到本地的文件,说明Hyper-V的共享没生效,得回到Hyper-V管理器重新配置共享。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:18:54