解決docker容器重啟之後/etc下某些配置文件被重置的問題

1.

/etc/hosts, /etc/resolv.conf和/etc/hostname容器中的這三個文件不存在於鏡像,而是存在於於/var/lib/docker/containers/,在啟動容器的時候,通過mount的形式將這些文件掛載到容器內部。

因此,如果在容器中修改這些文件的話,修改部分不會存在於容器的top layer,而是直接寫入這三個物理文件中。

2.為什麼重啟後修改內容不存在瞭?

原因是:每次Docker在啟動容器的時候,通過重新構建新的/etc/hosts文件,這又是為什麼呢?

原因是:容器重啟,IP地址為改變,hosts文件中原來的IP地址無效,因此理應修改hosts文件,否則會產生臟數據。

3.有沒有什麼好的解決方法?

可以通過docker run命令的–add-host參數來為容器添加host與ip的映射關系。

補充:Docker容器中解決重啟配置不生效(source /etc/profile)

問題描述:

docker在使用過程中,有時候自定義容器實例中的某些配置文件,例如:/etc/profile,但是修改後,每一次啟動都需要手動 source 一遍令它重新生效,這很繁瑣。

解決方法:

在容器實例中 ~/.bashrc 配置文件末尾添加 source /etc/profile,保存退出即可。這樣就能夠實現重啟後自動刷新配置文件,而無需手動操作。

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。

推薦閱讀: