問題描述:使用-v將宿主機的文件掛載到容器,在宿主機中修改文件,或者通過cp等方式改變文件數據的時候,進入到容器中查看掛載的文件,發現文件數據並沒有發生改變,此時會產生掛載文件在宿主機和容器中不同步的現象
問題分析:通過查閱資料可知,docker在進行文件掛載時,並不是僅僅掛載文件名到對應位置,而是將文件對應的inode 進行映射。用vim進行文件的編輯並保存時,系統采用的是備份、替換的策略,文件用vim等工具編輯的過程實質是,備份原來的文件,當新文件編輯完成后,再將新文件替換文原件,這會導致文件的inode變化,所以docker內外的文件並不會同步。而用echo等重定向操作修改文件時,文件的inode保持不變,所以不會發生類似現象。
問題解決思路:
1,每次修改文件后,重啟容器使數據同步
2,通過echo、cat重定向的方式修改文件內容
3,掛載文件夾,避免直接掛載文件
