docker 如何使用主機名與本地網路中的其他主機通信?
我在同一網路中有兩台電腦,其主機名和 IP 地址(動態 IP)如下:
host1.local - 10.0.0.11 host2.local - 10.0.0.12
host1
正在使用預設配置執行 Docker。中的容器
host1
可以host2
使用 IP 地址10.0.0.12
連接,但無法host2
使用主機名連接host2.local
。誰能告訴我容器如何直接連接到hosts2
使用的主機名。請注意,這兩個伺服器host1, host2
都在 DHCP 伺服器中並且沒有固定的 IP 地址,因此在我的情況下配置文件**/etc/hosts**不起作用。
Docker 容器通常在預設的橋接網路中:
啟動 Docker 時,會自動創建一個預設的橋接網路(也稱為橋接),除非另有說明,否則新啟動的容器會連接到它。
您還可以使用具有自己的 DNS 服務的使用者定義網橋:
使用者定義的網橋提供容器之間的自動 DNS 解析。
在使用者定義的橋接網路上,容器可以通過名稱或別名相互解析。
在容器中配置 DNS 解析還有其他選項(請參見此處):
預設情況下,容器會繼承
/etc/resolv.conf
配置文件中定義的主機的 DNS 設置。使用預設橋接網路的容器會獲得此文件的副本,而使用自定義網路的容器使用 Docker 的嵌入式 DNS 伺服器,它將外部 DNS 查找轉發到主機上配置的 DNS 伺服器。/etc/hosts 中定義的自定義主機不會被繼承。要將其他主機傳遞到您的容器中,請參閱 docker run 參考文件中的“向容器主機文件添加條目”。您可以基於每個容器覆蓋這些設置。
並將條目添加到容器主機文件中說:
/etc/hosts
您可以使用一個或多個--add-host
標誌將其他主機添加到容器的文件中。此範例為名為 docker 的主機添加靜態地址:$ docker run --add-host=docker:93.184.216.34 --rm -it alpine
當然,您也可以配置上游 DNS 伺服器以正確解析
*.local
. 如果您為此使用 mDNS,則上游 DNS 伺服器必須能夠使用它。