Docker将容器目录挂载到主机目录失败,提示找不到Python脚本文件
问题原因
- Windows本地路径格式错误
你在挂载命令中使用的/Users/lp/local_env-Returns/是类Unix系统的路径写法,Windows系统下Docker无法识别该路径,会默认在容器内创建一个空的/cmi_forecast_script目录,覆盖镜像中该目录下已有的文件,自然找不到cmi_forecast_script.py脚本。 - 权限不匹配
即使路径写对,Windows下挂载到容器的目录默认归属root用户,而你的镜像中配置了使用uid为5678的普通用户appuser运行程序,没有读取挂载目录内容的权限,也会触发文件不存在的报错。 - 你尝试单独挂载单个py文件的操作本身也不推荐:Windows下绑定挂载单个文件时,本地文件修改后会触发inode变化,Docker会识别为文件被删除,直接导致运行报错。
解决方法
步骤1:修正挂载路径写法
Windows下Docker挂载有两种合法路径写法,二选一即可:
- WSL风格路径:
/c/Users/lp/local_env-Returns - Windows原生路径:
C:\Users\lp\local_env-Returns
步骤2:选择合适的权限方案
方案1(本地开发推荐,操作最简单)
运行容器时指定用root用户执行,规避权限问题,运行后容器内生成的csv文件会直接同步到本地目录:
docker run --user root -v /c/Users/lp/local_env-Returns:/cmi_forecast_script <你的镜像名>
方案2(保留普通用户运行)
给挂载目录加权限标记适配Windows挂载规则:
docker run -v /c/Users/lp/local_env-Returns:/cmi_forecast_script:z <你的镜像名>
验证方法
你可以先执行以下命令验证挂载是否正常,只要输出你本地目录的5个文件就说明路径配置正确:
docker run --rm -it -v /c/Users/lp/local_env-Returns:/cmi_forecast_script <你的镜像名> ls /cmi_forecast_script
内容的提问来源于stack exchange,提问作者LennartPfeiler
相关产品推荐
相关产品推荐

