必须先在 Docker Desktop 设置中勾选移动硬盘盘符并重启,再用 F:/path 格式写 -v 参数,否则报 “no such file or directory”;拔插硬盘后需重启容器,且 NTFS 盘需确保当前用户有完全控制权限。

必须先在 Docker Desktop 设置里勾选移动硬盘盘符
Windows 下 Docker Desktop 默认无法访问任何外部存储设备,包括 USB 移动硬盘、SD 卡或网络映射盘。不手动授权,docker run -v 命令会直接报错 no such file or directory,哪怕路径存在、权限正常。操作路径是:右键任务栏 Docker 图标 → Settings → 左侧 Resources → File Sharing → 在列表中找到你的移动硬盘盘符(如 F: 或 G:),勾选它 → 点击 Apply & Restart。重启完成后,状态栏显示 “Docker Desktop running” 才算生效。
挂载命令里路径必须用 C:/ 格式,不能用 \ 或 //
移动硬盘路径写法错误是第二高发问题。比如你插上移动硬盘后资源管理器显示为 F:\myapp\config,在 docker run -v 中必须写成:
docker run -v F:/myapp/config:/app/config nginx
以下写法全部无效:
-
F:\myapp\config(反斜杠,CMD/PowerShell 会解析失败) -
//f/myapp/config(类 Linux 网络路径,Docker Desktop 不认) -
/f/myapp/config(容器内路径格式,宿主机命令中不能这么写)
注意:路径含中文或空格无需加引号,F:/我的配置文件夹:/etc/nginx/conf.d 可直接运行。
移动硬盘拔插后挂载会失效,容器需重启
Docker Desktop 不监听 Windows 的磁盘热插拔事件。一旦你拔掉移动硬盘再重新插入,即使盘符没变(比如还是 E:),已运行的容器内挂载点会变成只读或不可访问状态,ls /mnt 可能卡住或返回 I/O error。这不是权限问题,而是底层 WSL2 文件系统缓存未刷新。解决方式只有两个:
- 提前用
docker stop & docker rm清理旧容器 - 等移动硬盘重新识别完成(资源管理器能打开),再用原命令重新
docker run
不要试图在容器里执行 mount -o remount —— 容器内没有权限操作宿主机挂载点。
NTFS 权限和当前 Windows 用户必须匹配
如果移动硬盘是 NTFS 格式(绝大多数 USB 3.0+ 硬盘默认如此),Docker Desktop 启动的 WSL2 进程是以你当前 Windows 登录用户身份运行的。这意味着:
- 移动硬盘根目录不能设为“仅管理员可访问”
- 若硬盘从另一台 Windows 电脑复制过来,可能保留了原用户的 ACL,导致新机器上 Docker 读不到文件
- 临时修复方法:右键移动硬盘 → 属性 → 安全 → 编辑 → 添加当前用户名 → 勾选“完全控制”
exFAT/FAT32 移动盘无此限制,但不支持硬链接和 Unix 权限,部分镜像(如 PostgreSQL)可能启动失败。


















