必须完成驱动器授权、路径格式转换、挂载命令执行三步闭环,缺一不可;先在docker desktop settings→file sharing中勾选并验证c:/等盘符权限,再用c:/path格式写-v参数,最后通过容器内外文件双向同步验证。

在Windows系统中让Docker容器直接读写本地文件夹,必须完成驱动器授权、路径格式转换、挂载命令执行三步闭环,缺一不可,否则运行时会报“no such file or directory”或挂载为空。
开启Docker Desktop对磁盘的访问权限
这一步是Windows独有的强制前置动作,跳过则所有后续操作必然失败。Docker Desktop默认被隔离在WSL2虚拟环境中,无法主动扫描或访问宿主机任意磁盘。
右键任务栏Docker图标 → Settings → 左侧选 Resources → File Sharing
在共享列表中【勾选你要挂载的盘符,如C:或E:】;若勾选后右侧出现红色警告图标,说明凭据未通过验证,此时需点击提示框输入当前Windows登录用户名和密码(注意:不能用PIN码或Microsoft账户的临时验证码)
点击 Apply & Restart,等待Docker Desktop完全重启(状态栏显示 “Docker Desktop running”),中途关闭窗口会导致配置未生效。
写对Windows路径格式
Windows原生路径(如C:\mydata)在Docker命令中直接使用会解析失败——容器内Linux环境不认识反斜杠和冒号分隔的盘符语法。
方法一:用正斜杠 + 驱动器前缀(推荐)
例如:C:/mydata、E:/project/config
Windows 命令行编码与兼容规范。涵盖 GBK/UTF-8 编码、PowerShell/pwsh 互操作、Python/Node.js、Git 配置及代码生成规则。适用于 Windows 10/11 + MSYS2/Git Bash 环境下的所有命令行操作。
方法二:用双斜杠前缀(兼容旧版写法)
例如://c/mydata、//e/project/config
【含中文或空格的路径无需加引号】,Docker Desktop 4.20+已原生支持,如C:/我的项目/data可直接用于-v参数。
切勿使用/host_mnt/c/...这类路径——那是容器内部看到的WSL2挂载点,只在容器里有效,宿主机命令行中写它会导致挂载目标错位。
执行绑定挂载并验证双向同步
第一步:在Windows中手动创建宿主目录
例如在资源管理器中新建 C:\test-mount,并在其中放入一个测试文件:echo "host-init" > C:\test-mount\init.txt
第二步:运行带挂载的容器docker run -it -v C:/test-mount:/mnt alpine:latest
第三步:在容器内确认挂载内容
进入后执行 ls /mnt,应能看到 init.txt;再执行 echo "from-container" > /mnt/container.txt
第四步:退出容器,在Windows资源管理器打开 C:\test-mount,应同时存在 init.txt 和新生成的 container.txt ——双向实时同步成立。










