修改docker -v 掛載的檔案遇到的問題。inode 軟連結 硬連結 docker volume
阿新 • • 發佈:2018-12-04
原文地址: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 的軟連結和硬連結