我有一个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 Subsystem for Linux(Ubuntu)bash shell中,我将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的绑定(bind)之一,这是运行时出现问题的地方:
    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计算机,并显示了错误。

    我想添加此指南作为参考:
  • Docker for Windows
  • Try to run in WSL

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

    *****编辑:

    总结这种类型的疑难解答here的其他资源

    关于docker - 为什么在Windows Subsystem for Linux中从Windows上的Docker上获得 “bind source path does not exist”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54513865/

    10-10 21:39
    查看更多