Windows Host Docker + WSL-卷挂载问题

时间:2020-06-26 13:03:56

标签: docker windows-subsystem-for-linux docker-volume

thx到电晕–我们中的大多数人都在家工作,由于一些方便,我想使用在家中的Windows机器。

我确实在DockerDesktop 2.3.0.3版和Windows 19.03.8版上运行的引擎上运行Win10。 我正在做的是将docker deamon暴露在localhost上,以便从安装了Ubuntu的WSL(版本1,而非2)中使用它。 Docker本身可以工作,我可以提取图像并做一些基本的事情。但是我在安装卷时遇到了问题:-/

当我尝试运行docker-compose up命令时,它失败并显示以下错误:

ERROR: for my-service  Cannot start service my-service: error while mounting volume '/var/lib/docker/volumes/someDir/_data': failed to mount local volume: mount /home/myUser/myLocalDirectory:/var/lib/docker/volumes/someDir/_data, flags: 0x1000: no such file or directory

目录/home/myUser/myLocalDirectory确实存在。 目录/var/lib/docker/volumes/someDir/_data在我的WSL“主机”上不存在。只有一个/var/lib/docker-engine/...文件夹,这显然不是我要查找的文件夹:-/

我的工作路径是/mnt/e/projects/myDockerProject-但我也试图安装/绑定文件夹/硬盘驱动器,如图所示here

所有方法都不起作用,我真的很困惑-您有任何建议/解释吗?

1 个答案:

答案 0 :(得分:0)

当我使用适用于Windows的Docker运行linux容器时,我绑定了挂载c:/the/windows/path:/desired/path/in/the/container

这里有很多层:

         ___ WSL
        /
Windows
        \___ Docker Linux VM -- Containers

在“正常”情况下(带有linux容器的linux主机),您绑定安装本地目录。在上图中,它对应于Docker Linux VM中的目录。但是Docker for Windows允许我们改为指定Windows路径。

当您将WSL放入混音中时,事情会变得更加混乱。在WSL中,/home已经是某种魔术,没有显示直接链接到c驱动器:

root@MyPcName:~# df
Filesystem     1K-blocks      Used Available Use% Mounted on
rootfs         498557588 390255608 108301980  79% /
root           498557588 390255608 108301980  79% /root
home           498557588 390255608 108301980  79% /home
data           498557588 390255608 108301980  79% /data
cache          498557588 390255608 108301980  79% /cache
mnt            498557588 390255608 108301980  79% /mnt
none           498557588 390255608 108301980  79% /dev
none           498557588 390255608 108301980  79% /run
none           498557588 390255608 108301980  79% /run/lock
none           498557588 390255608 108301980  79% /run/shm
none           498557588 390255608 108301980  79% /run/user
cgroup         498557588 390255608 108301980  79% /sys/fs/cgroup
C:\            498557588 390255608 108301980  79% /mnt/c

/home显然对应于C:\Users,但是您不能从df的输出或/proc/mounts/etc/fstab的内容中看出来。

我建议您尝试以下操作:

  1. 指定Windows路径:C:/Users/myUser/myLocalDirectory:/desired/path/in/the/container
  2. 指定从“基本” Windows驱动器开始的WSL路径:/mnt/c/Users/myUser/myLocalDirectory:/desired/path/in/the/container
  3. 如果上述两种方法均无效,请从DOS或powershell提示符启动docker-compose up,然后按照上面#1的方式使用Windows路径