在Windows系统Docker中如何正确挂载wsl目录文件并验证挂载结果

从 Mounts 配置能看出核心问题:你在 Windows 宿主命令行(如 PowerShell/CMD) 中执行 docker run 时,Source: "/home/xinference" 被 Docker 解析成了 Windows 宿主的路径(而非 WSL 的路径),导致挂载源完全错了,所以容器内看不到 WSL 中的 test.txt

一、为什么路径会解析错误?

Docker 路径解析规则完全依赖「执行命令的环境」,这是关键:

  • 如果你在 WSL 终端(如 Ubuntu-22.04 终端) 执行 docker run -v /home/xinference:/data
    Docker 会把 /home/xinference 解析为 当前 WSL(Ubuntu-22.04)内的目录(正确路径)。
  • 但你是在 Windows 宿主命令行(如 C:\Windows\system32>) 执行的命令:
    Docker 会把 Linux 风格的 /home/xinference 按 Windows 规则解析,实际指向 C:\home\xinference(Windows 把 / 当作 C 盘根目录)—— 这才是容器当前挂载的「真正源路径」,和 WSL 毫无关系!

二、验证错误挂载源(Windows 宿主的 C:\home\xinference)

你可以去 Windows 宿主的 C:\ 盘根目录看看,会发现多了一个 home 文件夹,里面的 xinference 目录下,正是容器内 /data 看到的 cache、logs、model(因为容器往 /data 写数据时,实际写的是 C:\home\xinference)。

三、解决方案:用正确的路径重新挂载 WSL 目录

根据你执行 docker run 的环境,分两种正确写法:

场景 1:在 Windows 宿主命令行(PowerShell/CMD)执行

必须用 WSL 共享路径格式\\wsl$\<分发版名称>\<WSL内路径>),明确指向 Ubuntu-22.04 的 /home/xinference

# 1. 先停止并删除旧容器(因为挂载错了,必须重建)
docker stop xinference
docker rm xinference

# 2. 用 WSL 共享路径重新创建容器(关键是 -v 后的路径)
docker run --name xinference -d -p 9997:9997 ^
  -e XINFERENCE_HOME=/data ^
  -v \\wsl$\Ubuntu-22.04\home\xinference:/data ^  # 正确指向 WSL 目录
  --gpus all xprobe/xinference:v1.9.0 xinference-local -H 0.0.0.0
场景 2:在 WSL 终端(Ubuntu-22.04 终端)执行

直接用 Linux 风格路径即可(此时 Docker 会解析为 WSL 内的路径):

# 1. 进入 Ubuntu-22.04 终端(先在 Windows 打开 WSL 终端)
wsl -d Ubuntu-22.04

# 2. 停止删除旧容器(若已存在)
docker stop xinference
docker rm xinference

# 3. 用 Linux 路径创建容器(直接写 /home/xinference 即可)
docker run --name xinference -d -p 9997:9997 \
  -e XINFERENCE_HOME=/data \
  -v /home/xinference:/data \  # 此时会解析为 WSL 内的 /home/xinference
  --gpus all xprobe/xinference:v1.9.0 xinference-local -H 0.0.0.0

四、验证正确挂载

  1. 在 Ubuntu-22.04 终端中创建测试文件:
    sudo echo "test from WSL Ubuntu-22.04" > /home/xinference/test.txt
    
  2. 进入容器查看是否同步:
    docker exec -it xinference /bin/bash
    ls /data  # 此时能看到 test.txt、cache、logs、model
    cat /data/test.txt  # 输出 "test from WSL Ubuntu-22.04",证明挂载正确
    

总结

核心坑点:Windows 命令行和 WSL 终端执行 docker run 时,路径解析规则完全不同

  • Windows 命令行:/xxx → 指向 C:\xxx(宿主路径);
  • WSL 终端:/xxx → 指向 WSL 内的 /xxx(正确路径)。
    必须根据执行环境选择对应的挂载路径格式!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值