使用错误路径在WSL上编写Docker:\\?\C:\

使用错误路径在WSL上编写Docker:\\?\C:\,docker,path,docker-compose,windows-subsystem-for-linux,Docker,Path,Docker Compose,Windows Subsystem For Linux,我已经为这个问题挣扎了一天多,虽然在这里和其他地方都有类似的问题,但没有一个能真正解决我的问题。在上下文中,我使用docker没有问题,只使用docker compose 我正在WSL环境中从事一个使用docker compose的旧项目。当我跑步时: docker-compose -f /srv/etc/docker/docker-compose.yml -f /srv/etc/docker/docker-compose.prod.yml up --build 我得到以下错误: OSErro

我已经为这个问题挣扎了一天多,虽然在这里和其他地方都有类似的问题,但没有一个能真正解决我的问题。在上下文中,我使用
docker
没有问题,只使用
docker compose

我正在WSL环境中从事一个使用docker compose的旧项目。当我跑步时:

docker-compose -f /srv/etc/docker/docker-compose.yml -f /srv/etc/docker/docker-compose.prod.yml up --build
我得到以下错误:

OSError: Can not read file in context: \\?\C:\Users\<path>\venv\bin\python
OSError:无法读取上下文中的文件:\\?\C:\Users\\venv\bin\python
其他有类似问题的人的路径从
/mnt/c
开始,这可以通过将
/c
装载到该目录来解决。然而,我的错误路径与我在类似问题上看到的其他路径不匹配

不管怎样,我尝试了安装解决方案,但它并没有改变我的问题

我还看到有人提到
docker engine使用wsl
,但是
docker engine check
没有显示
wsl
一个,只有一个名为
current

我已经按照上面的步骤让WSL使用Docker for Windows,我在类似的问题中看到了OP之前所做的事情,或者作为解决问题的建议

所以,有几个问题:

  • 有人知道Docker compose为什么要使用这样一条奇怪的路径吗
  • 如何修复此路径
    • 我想你遇到了

      显然,通过调用docker compose,我调用的是docker for Windows的docker compose,它使用Windows的python。Python的sys.platform是“win32”(当然),这导致docker compose将该前缀添加到我的上下文中。WSL的docker compose调用正确的python,将sys.platform作为linux返回


      我终于明白了,但这正是问题所在。@Tuma你是如何解决问题的?嗨@MoA。链接的github问题是由我打开的。我不记得确切的命令,但我记得我必须通过
      apt install
      在Windows和WSL上安装Docker。