执行docker-compose up -d时挂载路径创建报错:mkdir /host_mnt/d: file exists
解决Docker Compose挂载Windows盘符时的
mkdir /host_mnt/d: file exists错误 你遇到的这个问题,本质是Windows环境下Docker(尤其是WSL2后端)的盘符挂载机制冲突导致的——Docker尝试创建/host_mnt/d路径时,发现该路径已经被其他进程(比如WSL自身的挂载)占用了。下面是几个按优先级排序的解决方案:
方法一:重启Docker Desktop(最快速修复)
很多时候这个错误只是Docker的挂载状态残留导致的,重启就能解决:
- 右键点击任务栏上的Docker图标,选择Restart
- 等Docker完全重启完成后,回到你的项目目录
D:\project\c\test\docker,重新执行docker-compose up -d
方法二:手动清理WSL2中的残留挂载
如果重启Docker没用,大概率是WSL2自己挂载了D盘导致冲突:
- 打开任意WSL2发行版的终端(比如Ubuntu)
- 执行命令检查D盘的挂载状态:
mount | grep /host_mnt/d - 如果输出了挂载信息,执行卸载命令释放路径:
sudo umount /host_mnt/d - 回到Windows的命令行窗口,重新运行
docker-compose up -d
方法三:检查Docker的文件共享权限
确保Docker有权限访问你的D盘:
- 打开Docker Desktop的Settings(设置)
- 切换到Resources -> File Sharing选项卡
- 确认D盘已经被勾选,如果没有就勾选上,然后点击Apply & Restart
- 重启完成后再次尝试启动容器
方法四:修改docker-compose.yaml的挂载路径
如果上面的方法都无效,可以尝试用绝对路径替换相对路径:
打开你的docker-compose.yaml,把volumes部分的相对路径改成Windows绝对路径(注意用正斜杠或者双反斜杠):
volumes: - D:/project/c/test/docker:/home/debugger/code
保存后重新执行docker-compose up -d
额外建议
如果你的Docker用的是WSL2后端,更推荐把项目放在WSL的文件系统中(比如\\wsl$\Ubuntu\home\你的用户名\project),这样不仅挂载性能更好,还能避免很多跨系统的路径冲突问题。
内容的提问来源于stack exchange,提问作者王奕然
相关产品推荐
相关产品推荐

