为什么我在 Windows 子系统中的 Windows 上从 Docker on Windows 获取"bind source path does not exist"?



我有一个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'

在Linux(Ubuntu)的Windows子系统中,bash shell Icd/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 v123.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.

解决方案是这样的:我将装载点从/home/c/folder更改为/mnt/f/folder,一切都重新开始工作。

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

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

  • 适用于Windows的Docker
  • 尝试在WSL中运行

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

*****编辑:

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

最新更新