docker挂载文件修改不同步、未同步
侧边栏壁纸
博主昵称
yuc

  • 累计撰写 291 篇文章
  • 累计收到 0 条评论

docker挂载文件修改不同步、未同步

yuc
yuc
2024-09-14 / 最后修改: 2024-09-14 09:18 / 0 评论 / 9 阅读 / 正在检测是否收录...
背景

某次修改宿主机挂载到 docker 容器上的文件内容后,在容器内查看文件内容出现错误

英文环境:stale file headle
中文环境:文件句柄失效

后面经过测试,还可能出现文件内容不一致,容器内的没有同步修改

原因

经过检索后,确定了问题:docker 挂载文件时,并不是挂载了某个文件的路径,而是挂载了文件的inode 某些编辑器(vi)在编辑保存文件时,采用了备份、替换的策略,即编辑过程中,将变更写入新文件,保存时,再将备份文件替换原文件,此时会导致文件的inode发生变化。原inode对应的文件其实并没有发生修改。

解决办法
  1. 避免使用 vim ,它会执行这种策略,或者设置 backupcopy=yes
  2. 文件权限修改为 666 或者 777, vim 则会保持 inode 不变

经过测试,及时没有使用上面的方法, vim 不是都会修改 inode 号,目前还没有发现规律(什么时候才会更换 inode),但为了保险,建议后续修改文件的时候都按照要求

0

评论

博主关闭了当前页面的评论