Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows主机Docker+;WSL-卷安装问题_Docker_Windows Subsystem For Linux_Docker Volume - Fatal编程技术网

Windows主机Docker+;WSL-卷安装问题

Windows主机Docker+;WSL-卷安装问题,docker,windows-subsystem-for-linux,docker-volume,Docker,Windows Subsystem For Linux,Docker Volume,thx到电晕-我们大多数人在家工作,由于一些便利,我想使用我在家里的windows机器 我确实在DockerDesktop版本2.3.0.3下运行Win10,引擎在版本19.03.8上运行。 我正在做的是在本地主机上公开docker deamon,以便从我安装的WSL(版本1,而不是2)Ubuntu中使用它。 Docker本身就可以工作,我可以拉图像和做基本的事情。但我在增加容量时面临着一些问题:-/ 当我尝试运行docker compose up命令时,该命令失败,出现以下错误: ERROR:

thx到电晕-我们大多数人在家工作,由于一些便利,我想使用我在家里的windows机器

我确实在DockerDesktop版本2.3.0.3下运行Win10,引擎在版本19.03.8上运行。 我正在做的是在本地主机上公开docker deamon,以便从我安装的WSL(版本1,而不是2)Ubuntu中使用它。 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
确实存在。 我的WSL“主机”上不存在目录
/var/lib/docker/volumes/someDir/\u data
。只有一个
/var/lib/docker engine/…
文件夹,这显然不是我要找的文件夹:-/

我的工作路径是
/mnt/e/projects/myDockerProject
——但我也尝试挂载/绑定文件夹/硬盘驱动器,如图所示


所有这些都不起作用,我真的被卡住了-你有什么建议/解释吗?

当我使用Docker for Windows运行linux容器时,我绑定mount
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
的内容中分辨出来

我建议您尝试以下方法:

  • 指定windows路径:
    C:/Users/myUser/myLocalDirectory:/desired/path/in/the/container
  • 指定以“基本”windows驱动器开始的WSL路径:
    /mnt/c/Users/myUser/myLocalDirectory:/desired/path/in/the/container
  • 如果两者都不起作用,则从DOS或powershell提示符启动
    docker compose up
    ,并使用上面第1条中的windows路径