修改docker -v 掛載的文件遇到的問題。inode 軟鏈接 硬鏈接 docker volume

原文地址:https://lrita.github.io/2017/08/18/mount-volume-to-docker-and-modify-from-host/

在啓動docker容器時,爲了保證一些基礎配置與宿主機保持同步,通常需要將這些配置文件掛載進docker容器,例如/etc/resolv.conf//etc/hosts//etc/localtime等。

當這些配置變化時,我們通常會修改這些文件。但是此時遇到了一個問題:

當在宿主機上修改這些文件後,docker容器內查看時,這些文件並未發生對應的修改。

然後通過查閱相關資料,發現該問題是由docker -v掛載文件和某些編輯器存儲文件的行爲共同導致 的。

  • docker 掛載文件時,並不是掛載了某個文件的路徑,而是實打實的掛載了對應的文件,即掛載了某 個指定的inode文件。
  • 某些編輯器(vi)在編輯保存文件時,採用了備份、替換的策略,即編輯過程中,將變更寫入新文件, 保存時,再將備份文件替換原文件,此時會導致文件的inode發生變化。
  • inode對應的文件其實並沒有發生修改。

因此,我們從宿主機上修改這些文件時,應該採用echo重定向等操作,避免文件的inode發生變化。

 

附 inode:http://www.ruanyifeng.com/blog/2011/12/inode.html

通過 inode 這篇文章能很好的理解 Linux 的軟鏈接和硬鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章