docker掛載文件的更新問(wèn)題
起因
項(xiàng)目中經(jīng)常會(huì)有需求洽损,宿主機(jī)上放有配置文件庞溜,然后掛載到docker容器內(nèi)。一般還有需求,配置文件更新后流码,docker容器應(yīng)該可以得到通知又官,得到文件的新內(nèi)容。但事與愿違漫试。以下是網(wǎng)上找到的解決辦法和原因六敬。
解決方法和原因
將宿主機(jī)配置文件掛載到容器,在宿主機(jī)修改配置文件驾荣,但容器內(nèi)掛載的文件并未發(fā)生變化外构,直至docker重啟。
記得不是這樣的播掷。起初以為是版本的原因审编。于是在最新版docker上做了測(cè)試,問(wèn)題依舊歧匈。
只好網(wǎng)上各種查垒酬。最后從docker issue上找到了答案:
docker掛載文件基于inode。vim等編輯工具保存文件時(shí)件炉,并非直接保存勘究,而是將一份新的臨時(shí)文件覆蓋了舊文件。對(duì)于inode而言斟冕,原文件并未被修改口糕。
解決方案有三:
- 換用nano等直接更新文件的編輯工具
- 改為掛載目錄。
- 修改vim配置宫静,添加:set backupcopy=yes