为什么我会得到;“绑定源路径不存在”;从Windows上的Docker到Linux的Windows子系统?

为什么我会得到;“绑定源路径不存在”;从Windows上的Docker到Linux的Windows子系统?,docker,docker-compose,windows-10,windows-subsystem-for-linux,Docker,Docker Compose,Windows 10,Windows Subsystem For Linux,我有一个docker compose.yml文件,其中我正在装入一个带有bind的卷,如下所示: version: '3.3' services: backend: image: gitlab:5000/foo/bar/backend:${CI_COMMIT_SHA} volumes: - type: bind source: ../backend target: /var/www/html - type: bind

我有一个
docker compose.yml
文件,其中我正在装入一个带有
bind
的卷,如下所示:

version: '3.3'
services:
  backend:
    image: gitlab:5000/foo/bar/backend:${CI_COMMIT_SHA}
    volumes:
      - type: bind
        source: ../backend
        target: /var/www/html
      - type: bind
        source: ../backend
        target: /var/envs
    environment:
      SRV_ENV: 'development'
在Windows Linux子系统(Ubuntu)中,bashshelli
cd
/home/urig/src/foo/bar/deploy

当我跑步时:

docker-compose -f docker-compose.yml down
我得到以下错误:

starting server...
Creating network "deploy_default" with the default driver
Creating deploy_backend_1    ... error
ERROR: for deploy_backend_1  Cannot create container for service backend: invalid mount config for type "bind": bind source path does not exist: /home/urig/src/foo/bar/backend

ERROR: for backend  Cannot create container for service backend: invalid mount config for type "bind": bind source path does not exist: /home/urig/src/foo/bar/backend
ERROR: Encountered errors while bringing up the project.
ERROR: No container found for backend_1
为什么WSL找不到源文件夹以及如何解决此问题?


我正在使用Docker Desktop(适用于Windows)CE v2.0.0.2。Docker Engine v18.09.1,Docker compose v1.23.2

我遇到了这个问题,尝试了几次

  • Windows 10版本18.03 17134.1006
  • Docker版本18.09.7,内部版本2d0083d
  • docker compose版本1.24.1,版本4667896b
当我遇到上述错误时,我正在运行
docker compose-up--build
。我的一个绑定针对
/home/c/folder
,这是运行时出现问题的一点:

Creating sytraining11_sytraining11-codevalidation_1 ... done
compose.parallel.parallel_execute_iter: Finished processing: ServiceName(project='sytraining11', service='sytraining11-codevalidation', number=1)
compose.parallel.feed_queue: Pending: set()
compose.parallel.parallel_execute_iter: Finished processing: <Service: sytraining11-codevalidation>
compose.parallel.feed_queue: Pending: set()

ERROR: for sytraining11-dev  Cannot create container for service sytraining11-dev: invalid mount config for type "bind": bind source path does not exist: /home/c/folder
ERROR: compose.cli.main.main: Encountered errors while bringing up the project.
正在创建sytraining11\u sytraining11-codevalidation\u 1。。。完成
compose.parallel.parallel\u execute\u iter:Finished processing:ServiceName(project='sytraining11',service='sytraining11-code-validation',number=1)
compose.parallel.feed_队列:挂起:set()
compose.parallel.parallel\u execute\u iter:已完成处理:
compose.parallel.feed_队列:挂起:set()
错误:for sytraining11 dev无法为服务创建容器sytraining11 dev:类型“bind”的装载配置无效:bind源路径不存在:/home/c/folder
错误:compose.cli.main.main:在启动项目时遇到错误。
解决方案是这样的:我将装载点从
/home/c/folder
更改为
/mnt/f/folder
,然后一切都重新开始工作

注意:当我设置WSL+docker时,
docker compose
工作了大约两天。但是,我在Windows中重新启动了Docker机器,出现了错误

我想添加此指南作为参考:

我必须承认,这些链接可能在某种程度上有所帮助,但我无法确认它们最终是否有任何效果。尽管我的回答含糊不清,但我还是想与大家分享一下,因为这可以在这类故障排除过程中提供一些细节

*****编辑:


总结此类故障排除的其他资源

请参见此处:@henry,谢谢。刚刚尝试了@jamesyale的建议,得到了几乎相同的错误:
绑定源路径不存在:/mnt/c/Users/urig/src/foo/bar/backend
@andolsized谢谢。我尝试了一条绝对路径,但没有成功。错误消息中显示的路径是从
.yml
文件中的相对路径正确导出的。Docker只是认为它是空的。似乎您试图在WSL中挂载一个目录,而不是从Windows C驱动器挂载。“我认为这根本行不通。@亨利,我也把目录复制到了Windows文件系统中,但仍然行不通。”。