绑定挂载目录到Docker镜像时如何保留子目录?Infer镜像实操问题
正确绑定挂载Infer Docker项目目录方案
挂载空目录的核心原因
- 相对路径解析错误:原示例中的
$PWD/../../examples是基于执行命令时当前处于docker/1.1.0/目录的前提,如果你执行docker run时的工作目录不匹配,相对路径会解析到不存在的本地路径,Docker会默认创建空目录挂载到容器内 - 系统挂载权限限制:Windows、macOS系统的Docker默认限制了可挂载的目录范围,未授权的路径会静默挂载失败,容器内显示为空目录
- 跨文件系统挂载异常:Windows使用WSL2 Docker后端时,如果项目放在Windows原生文件系统(
/mnt/c/等路径),跨文件系统挂载会出现兼容问题
正确操作步骤
- 提前获取本地待挂载项目目录的绝对路径,避免相对路径解析错误,例如本地项目存放在
/home/user/my-infer-project,直接复制该绝对路径备用 - 配置Docker挂载权限:
- macOS:打开Docker Desktop设置 → Resources → File Sharing,将项目目录所在路径添加到允许列表,应用设置后重启Docker
- Windows:打开Docker Desktop设置 → Resources → File Sharing,勾选项目目录所在的磁盘分区,应用设置后重启Docker
- 执行挂载命令,将占位符替换为你自己的本地绝对路径:
# 已构建过infer镜像可跳过前两步 cd /your/local/infer/repo/path/docker/1.1.0/ docker build -t infer . # 替换冒号前的路径为你自己的本地项目绝对路径 docker run -it -v /your/local/project/absolute/path:/infer-examples infer /bin/bash
- 进入容器后先执行
ls /infer-examples验证目录内容,确认和本地目录一致后再执行后续infer扫描命令
问题排查
如果挂载后仍然为空,先在宿主机执行ls /your/local/project/absolute/path确认本地路径下存在目标文件,再执行docker ps -a找到刚运行的容器ID,执行docker inspect 容器ID查看Mounts字段,确认Source路径和本地项目路径完全匹配,排除拼写错误。
内容的提问来源于stack exchange,提问作者isakbob
相关产品推荐
相关产品推荐

