1. 程式人生 > >修改docker -v 掛載的檔案遇到的問題。inode 軟連結 硬連結 docker volume

修改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 的軟連結和硬連結