最佳答案
我发现了一些有趣的怪异当试图挂载一个对接图像的窗口。
我创建了一个 .sh
脚本来装载项目文件夹,以运行我们的开发人员环境映像。我想要一个脚本,每个开发人员可以运行,不管他们的机器。它所做的只是使用当前项目文件夹运行 docker。
#!/usr/bin/env bash
docker run -it --rm -v D:\my\project\folder:/wkDir $IMAGE_TAG yarn dev
跑得不错。现在计划从 npm
调用这个脚本,所以我希望这个脚本能够相对于当前文件夹工作。我们试试另一个版本。
docker run -it --rm -v $PWD:/wkDir $IMAGE_TAG yarn dev
失败的原因:
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from
daemon: Mount denied:
The source path "D:/my/project/folder;C"
doesn't exist and is not known to Docker.
什么是 ;C
? 它是从哪里来的?
所以我做 echo $PWD
就得到了 /d/my/project/folder
。
有趣的是,$PWD
解析出了 linux 路径格式的正确路径,看起来 docker 正试图从这个路径转换到正确的 windows 路径,只是这个 ;C
突然出现了。\
是 /
..。
这到底是怎么回事?
我在 VSCode 的终端 git bash 和 powershell 中得到了相同的结果。
更新: 我注意到,在 VSCode 的 powershell 终端中运行 .sh
,会打开一个单独的 cmd.exe
控制台窗口,该窗口似乎在 git bash 中运行脚本。所以这可能是 Git bash 的问题。