如何让Docker容器访问宿主机文件?Django环境执行加载脚本报错求助
解决方案
Docker容器默认与宿主机文件系统完全隔离,未主动挂载的宿主机路径,容器内部无法直接访问,按照以下步骤操作即可解决:
1. 调整docker-compose卷挂载配置
打开你项目中的docker-compose.yml文件,在web服务的配置项下添加volumes挂载规则,把宿主机的/data01/ipse/rawdata目录挂载到容器内的对应路径(这里和代码中读取的路径保持一致即可,用同路径适配成本最低):
services: web: # 此处保留你原来的build、ports、environment等原有配置不要修改 volumes: # 冒号前为宿主机路径,冒号后为容器内路径 - /data01/ipse/rawdata:/data01/ipse/rawdata # 原有其他挂载规则也照常保留即可
2. 重启容器使配置生效
执行以下命令重启web服务,加载新的挂载配置:
docker-compose up -d web
3. 验证挂载有效性
执行命令进入容器内部检查文件是否可访问:
docker-compose exec web ls /data01/ipse/rawdata
如果命令输出包含manifest.txt,说明挂载成功,再执行你原来的加载数据命令即可正常运行。
异常排查
如果挂载后仍报错,先排查权限问题:确认容器内运行服务的用户对挂载的目录有读取权限,可临时执行chmod -R o+r /data01/ipse/rawdata给宿主机目录开全局读权限验证。
内容的提问来源于stack exchange,提问作者Samuel
相关产品推荐
相关产品推荐

