Docker挂载目录中PHP上传文件无法查看问题排查求助
Docker绑定挂载文件不同步问题排查方案
- 路径一致性校验
- 进入容器内部确认写入路径真实存在:执行
docker exec -it <container_id> ls -l /abc_datastore,对比宿主机同路径下ls -l /abc_datastore的输出,若两边文件列表不一致,说明PHP写入到了容器联合文件系统而非绑定挂载目录 - 校验PHP写入路径是否为软链接:执行
docker exec -it <container_id> readlink -f /abc_datastore,确认路径指向的是真实挂载目录而非容器内私有目录的软链
- 进入容器内部确认写入路径真实存在:执行
- SELinux上下文校验(挂载带
z标签时优先排查)- 查看宿主机挂载目录的SELinux上下文:执行
ls -Z /abc_datastore,正常带z标签的挂载目录上下文应为system_u:object_r:container_file_t:s0,若不符合可执行chcon -Rt container_file_t /abc_datastore手动修复 - 若使用Rootless模式部署Docker,需校验宿主机目录权限是否对应用户的从属ID映射范围,执行
grep $(whoami) /etc/subuid /etc/subgid确认映射范围覆盖目录权限位
- 查看宿主机挂载目录的SELinux上下文:执行
- 挂载传播属性调整
当前挂载传播属性为rprivate,若宿主机/abc_datastore本身是其他挂载点的子目录,该属性会阻断容器写入向宿主机同步,可重新创建容器时修改挂载参数为/abc_datastore:/abc_datastore:z,shared验证是否恢复同步 - 挂载覆盖与版本排查
- 执行
mount | grep /abc_datastore排查宿主机是否存在其他挂载点覆盖了该目录,导致查看的路径非Docker实际挂载路径 - 执行
docker info | grep Storage确认存储驱动为overlay2,旧版存储驱动(如aufs、devicemapper)存在绑定挂载不同步的已知BUG,建议升级到Docker最新稳定版
- 执行
内容的提问来源于stack exchange,提问作者Aaditya R Krishnan
相关产品推荐
相关产品推荐

