You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

WSL环境下Docker Compose卷挂载异常问题求助

解决Docker挂载主机文件夹显示内容不符的问题

这个问题的核心原因是你在Windows上使用的Docker Desktop是基于Hyper-V的Moby Linux虚拟机运行的——当你直接写/bin作为挂载源时,Docker并没有指向Windows主机的目录,而是指向了Moby Linux VM内部的/bin目录,这就是为什么你看到的内容和Windows主机上的不一样。

要解决这个问题,你需要明确Windows主机目录在Docker背后的Linux VM中的映射路径,具体操作步骤如下:

  • 首先,确定你要挂载的Windows主机文件夹的实际路径,比如你想挂载Windows的C:\my-shared-folder文件夹。
  • 在Docker的Linux VM(Moby)中,Windows的磁盘会被挂载到/mnt目录下,所以对应的路径应该是/mnt/c/my-shared-folder(C盘对应/mnt/c,D盘对应/mnt/d,以此类推)。
  • 修改你的docker-compose.yml中的volumes配置,把错误的路径替换成正确的映射:
    version: '3'
    services:
      t1:
        image: ubuntu
        volumes:
          - /mnt/c/my-shared-folder:/test
        command: '/bin/bash -c "/bin/ls /test"'
    

额外注意事项

  • 尽量避免挂载Windows的系统目录(比如C:\Windows\System32),这类目录可能存在权限限制,而且Linux和Windows的系统文件结构差异极大,挂载后容易出现异常。
  • 如果你使用的是WSL2后端的Docker,路径映射逻辑类似,但如果你是直接在WSL2发行版内运行Docker,也可以直接使用WSL2的本地路径(比如/home/your-wsl-user/my-folder)来挂载,这样性能会更好。
  • Windows和Linux的文件系统权限、符号链接等特性不完全兼容,挂载后如果遇到文件权限问题,可以在volumes配置中添加权限参数(比如:ro表示只读挂载)。

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

火山引擎 最新活动