Docker挂载路径异常:Git Bash下出现\Git\app如何解决?
Git Bash下Docker挂载目录出现
\Git\app的问题解决 问题场景
在Git Bash中执行Docker挂载命令:
winpty docker run -v $(pwd):/app alpine ls
意图将宿主机当前目录挂载到容器内/app目录,但执行后ls输出出现\Git\app,而非预期的app;但在PowerShell中执行docker run -v ${PWD}:/app alpine ls时输出正常。
\Git\app是什么
这是Git Bash的路径自动转换机制导致的异常。Git Bash基于MSYS环境,会自动将Windows路径转换为类Unix路径,但在结合winpty和Docker命令时,路径转换逻辑出现错误——它把$(pwd)输出的当前目录路径,错误处理成了相对于Git安装目录的相对路径,最终被Docker解析成了容器内部的一个名为\Git\app的目录,而非挂载宿主机的目录。
修复方案
以下几种方法都可以解决这个问题:
用双引号包裹路径并添加前缀转义
在Git Bash中执行:winpty docker run -v "/$(pwd):/app" alpine ls通过
/$(pwd)强制Git Bash输出正确的绝对路径格式,避免异常转换。临时禁用路径转换
借助MSYS_NO_PATHCONV环境变量阻止Git Bash的路径转换,执行命令:MSYS_NO_PATHCONV=1 winpty docker run -v $(pwd):/app alpine ls直接使用绝对路径
手动输入当前目录的Windows绝对路径替代$(pwd),例如:winpty docker run -v "C:\your\current\directory:/app" alpine ls
内容的提问来源于stack exchange,提问作者user8112352
相关产品推荐
相关产品推荐

