轉載自https://www.cnblogs.com/ZYTZ/p/13047948.html
關於docker中文件夾掛載成功 但是單文件掛載卻沒有生效的問題
因為用vim修改這里會有一個坑
docker -v mount 的機制:
-v mount 文件(或文件夾)時,docker 記錄的是該文件的 inode,並用 inode 追蹤。當用 vim 編輯了文件后,這個文件的 inode 就變了,也就是說這個 default.conf 文件已經不是運行 docker run 時的那個 default.conf 文件了,容器中自然也就沒了新的改動。 同時該 issue 的 opener 使用的是 sed -i 修改,也會使 inode 發生變化,sed -i 的機制是創建一個新的臨時文件,修改完后在重命名。對此,官方的建議是掛載文件夾,而不是文件。
https://github.com/moby/moby/issues/6011
上面這段參考:https://www.dazhuanlan.com/2020/01/02/5e0d7cfd57df8/
經測試發現,
- 我掛載單文件的nginx的container,沒重啟之前修改掛載的單文件沒有生效,但重啟之后修改的配置文件確實會更新,對於nginx來說配置更新本身就需要重啟,所以掛載文件其實也可以。
- 但對於那些需要修改單文件但又想不重啟container, 就可以實現更新的情況可以考慮掛載文件夾。我這里改為掛載文件夾