目錄
- /etc/hosts
- 為什么更改/etc/hosts后重啟容器,更改內容會消失?因為是臨時文件
- 我/etc/hosts文件原內容
/etc/hosts
容器的/etc/hosts文件是一個本地的域名解析文件,用于將主機名映射到IP地址。在容器內部,當需要訪問其他容器或主機時,可以通過/etc/hosts文件來解析主機名,從而實現網絡通信。
具體來說,當容器需要訪問其他容器或主機時,會先在自己的/etc/hosts文件中查找對應的主機名和IP地址的映射關系。如果找到了,就直接使用該IP地址進行通信;如果沒有找到,則會將請求發送到DNS服務器進行解析。
在容器中,通常會將主機名和IP地址的映射關系寫入/etc/hosts文件中,以提高網絡訪問的效率和穩定性。例如,如果容器需要訪問主機上的某個服務,可以將主機名和IP地址的映射關系寫入/etc/hosts文件中,這樣容器就可以直接使用IP地址進行訪問,而無需通過DNS服務器進行解析。
總之,容器的/etc/hosts文件是一個非常重要的文件,它可以幫助容器實現網絡通信,并提高網絡訪問的效率和穩定性。
為什么更改/etc/hosts后重啟容器,更改內容會消失?因為是臨時文件
容器內的/etc/hosts文件是臨時的,容器重啟后會被重置。如果需要在容器內永久保存修改后的/etc/hosts文件,可以將其掛載到宿主機上的一個文件中,然后在容器啟動時將該文件掛載到容器內的/etc/hosts文件中。
具體操作可以參考以下步驟:
- 在宿主機上創建一個文件,例如/etc/hosts.container,用于保存容器內的/etc/hosts文件。
- 在容器啟動時將該文件掛載到容器內的/etc/hosts文件中,例如:
docker run -v /etc/hosts.container:/etc/hosts ...
3.在容器內修改/etc/hosts文件時,實際上是修改了宿主機上的/etc/hosts.container文件,這樣即使容器重啟,修改后的/etc/hosts文件也能夠被保留下來。
注意:如果在容器內修改了/etc/hosts文件,需要手動同步到宿主機上的/etc/hosts.container文件中,否則容器重啟后修改將會丟失。
(但是用掛載的方式,貌似容器一些自己生成的內容沒法保留,參見下面)
我/etc/hosts文件原內容
127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.11 27b6fb63ce7d
各自作用如下:
- 127.0.0.1 localhost:將localhost映射到本地回環地址,即127.0.0.1,用于本地測試和開發。
- ::1 localhost ip6-localhost ip6-loopback:將IPv6的localhost地址映射到本地回環地址,用于IPv6的本地測試和開發。
- fe00::0 ip6-localnet:將IPv6的本地網絡地址映射到fe00::0,用于IPv6的本地網絡通信。
- ff00::0 ip6-mcastprefix:將IPv6的多播地址映射到ff00::0,用于IPv6的多播通信。
- ff02::1 ip6-allnodes:將IPv6的所有節點地址映射到ff02::1,用于IPv6的節點通信。
- ff02::2 ip6-allrouters:將IPv6的所有路由器地址映射到ff02::2,用于IPv6的路由器通信。
- 172.17.0.11 27b6fb63ce7d:將容器ID為27b6fb63ce7d的容器的IP地址映射到172.17.0.11,用于容器之間的通信。
如果將這些映射關系刪除,可能會對容器的網絡通信產生影響。例如,如果刪除了127.0.0.1 localhost的映射關系,容器可能無法通過localhost訪問本地服務;如果刪除了172.17.0.11 27b6fb63ce7d的映射關系,容器可能無法與其他容器進行通信。因此,建議不要隨意修改/etc/hosts文件中的內容,以免影響容器的正常運行。
cw讓添加下面這個進去,但是我從外面掛載進去后,進入容器發現上面的沒有自動生成,不知道有沒有問題。
172.16.80.201 xqplatformIp
所以我懷疑,之前生成內容的操作,容器是在做掛載之前完成的。
要不把echo "172.16.80.201 xqplatformIp" >> /etc/hosts
加到容器啟動運行腳本entrypoint.sh中?
這樣做也可以,但是cw說沒影響,那暫時不做了。