Windows10下Git Bash运行Docker同步S3失败求助
Docker Mount Denied: Source Path "C:/projects/docker;C" Doesn't Exist (Windows 10, Git Bash)
问题根源
这是Git Bash与Docker for Windows在路径解析上的典型兼容性问题。当你在Git Bash中使用$PWD时,它会将Unix风格的路径转换为Windows格式,但过程中可能意外混入了环境变量中的字符(比如错误里的;C大概率来自系统PATH变量的内容),导致Docker识别到一个拼接错误的路径C:/projects/docker;C,而非你实际存在的C:/projects/docker。
可行解决方案
下面是三种可以快速修复这个问题的方法:
1. 用pwd -W输出正确的Windows格式路径
修改挂载参数为-v "$(pwd -W)":/data,这会让Git Bash输出Windows原生的相对路径,Docker会自动补全盘符信息,形成正确的挂载路径。完整脚本如下:
docker container run \ --env AWS_ACCESS_KEY_ID=aaaaaaa \ --env AWS_SECRET_ACCESS_KEY=bbbbbbb \ -v "$(pwd -W)":/data \ garland/aws-cli-docker \ aws s3 sync . s3://www.typing-coacher.net
2. 手动指定完整的Windows绝对路径
直接跳过环境变量解析,手动写入你确认存在的路径,这是最直观且不容易出错的方式:
docker container run \ --env AWS_ACCESS_KEY_ID=aaaaaaa \ --env AWS_SECRET_ACCESS_KEY=bbbbbbb \ -v "C:/projects/docker":/data \ garland/aws-cli-docker \ aws s3 sync . s3://www.typing-coacher.net
3. 使用Docker兼容的Unix风格路径
Docker for Windows支持Unix风格的盘符写法(用/c/替代C:/),这种格式在Git Bash中不会被错误解析,Docker能直接识别:
docker container run \ --env AWS_ACCESS_KEY_ID=aaaaaaa \ --env AWS_SECRET_ACCESS_KEY=bbbbbbb \ -v "/c/projects/docker":/data \ garland/aws-cli-docker \ aws s3 sync . s3://www.typing-coacher.net
小提示
执行脚本前,你可以先在Git Bash里运行echo "$(pwd -W)"或者echo $PWD,确认输出的路径是否符合预期,再替换到Docker命令中,避免再次出现路径解析错误。
内容的提问来源于stack exchange,提问作者LiranC
相关产品推荐
相关产品推荐

