Windows环境执行docker run命令时$(pwd)参数无效报错问题
报错根因
$(pwd)是Linux、macOS等类Unix系统Shell的内置语法,作用是动态获取当前终端所在工作目录的绝对路径。你参考的教程原本面向类Unix系统用户编写,Windows系统的终端默认不识别该语法,Docker会直接把$(pwd)当成普通的自定义卷名处理,因字符串包含非法字符触发报错。
对应解决方法
根据你当前使用的Windows终端类型,替换命令里的$(pwd)即可:
- 使用CMD命令提示符时,替换为
%cd%,完整命令:
docker run -v %cd%:/mnt -p 9090:9090 -w /mnt mytest ./scripts/tests.sh
- 使用PowerShell时,替换为
${PWD},完整命令:
docker run -v ${PWD}:/mnt -p 9090:9090 -w /mnt mytest ./scripts/tests.sh
- 使用Git Bash、WSL等类Unix兼容终端时,在路径前加额外斜杠做路径转义,完整命令:
docker run -v /$(pwd):/mnt -p 9090:9090 -w /mnt mytest ./scripts/tests.sh
补充说明:如果替换后仍出现路径识别错误,可以直接写死项目文件夹的绝对路径,比如项目存放在
D:\workspace\my-nginx-demo,就把参数写成-v D:\workspace\my-nginx-demo:/mnt,这种写法不受终端语法差异影响,兼容性最高。
内容的提问来源于stack exchange,提问作者TommyR22
相关产品推荐
相关产品推荐

