?
本文檔使用 PHP中文網(wǎng)手冊(cè) 發(fā)布
本節(jié)中的信息涵蓋了用戶定義網(wǎng)絡(luò)中的容器的嵌入式 DNS 服務(wù)器操作。與連接到default bridge
網(wǎng)絡(luò)的容器相比,連接到用戶定義網(wǎng)絡(luò)的容器的 DNS 查找工作方式不同。
注意:為了保持向后兼容性,
default bridge
網(wǎng)絡(luò)中的 DNS 配置將保留,而不會(huì)改變行為。有關(guān)網(wǎng)絡(luò)中 DNS 配置的更多信息,請(qǐng)參閱默認(rèn)default bridge
網(wǎng)橋中的 DNS 布局 。
從Docker 1.10開始,docker 守護(hù)進(jìn)程實(shí)現(xiàn)了一個(gè)嵌入式 dns 服務(wù)器,它為使用有效的 dns 創(chuàng)建的任何容器提供內(nèi)建服務(wù)發(fā)現(xiàn)。name
或net-alias
或別名為link
有關(guān) Docker 如何管理容器內(nèi)的 DNS 配置的詳細(xì)信息,可以從一個(gè) Docke r版本更改為下一個(gè)版本。因此,您不應(yīng)該假設(shè)文件的方式,例如/etc/hosts
,/etc/resolv.conf
在容器中進(jìn)行管理,并將文件保持在單獨(dú)的位置,然后使用以 下Docker 選項(xiàng)。
影響容器域名服務(wù)的各種容器選項(xiàng)。
--name = CONTAINER-NAME | 使用--name 配置的容器名稱用于發(fā)現(xiàn)用戶定義的泊塢網(wǎng)內(nèi)的容器。嵌入式 DNS 服務(wù)器維護(hù)容器名稱和其IP地址(在容器連接的網(wǎng)絡(luò)上)之間的映射。 |
---|---|
--network-alias=ALIAS | 除了上面描述的名稱之外,容器還可以通過其中一個(gè)或多個(gè)配置的網(wǎng)絡(luò)別名(或 docker 網(wǎng)絡(luò)連接命令中的--alias)在用戶定義的網(wǎng)絡(luò)中發(fā)現(xiàn)。嵌入式 DNS 服務(wù)器維護(hù)所有容器別名與其在特定用戶定義網(wǎng)絡(luò)上的 IP 地址之間的映射。通過在 docker network connect 命令中使用--alias 選項(xiàng),容器可以在不同網(wǎng)絡(luò)中具有不同的別名。 |
--link = CONTAINER_NAME:ALIAS | 在運(yùn)行容器時(shí)使用此選項(xiàng)可為嵌入式 DNS 添加一個(gè)名為 ALIAS 的額外條目,該條目指向由 CONTAINER_NAME 標(biāo)識(shí)的容器的 IP 地址。當(dāng)使用 - 鏈接嵌入式 DNS 時(shí),將保證僅在使用--link 的容器上進(jìn)行本地化查找結(jié)果。這使得新容器內(nèi)的進(jìn)程可以連接到容器,而無需知道其名稱或 IP。 |
--dns = IP_ADDRESS ... | 如果嵌入式 DNS 服務(wù)器無法解析來自容器的名稱解析請(qǐng)求,則通過--dns 選項(xiàng)傳遞的 IP 地址將被嵌入式 DNS 服務(wù)器用于轉(zhuǎn)發(fā)DNS查詢。這些--dns IP 地址由嵌入式DNS服務(wù)器管理,并且不會(huì)在容器的/etc/resolv.conf 文件中更新。 |
--dns-search=DOMAIN... | 設(shè)置在容器內(nèi)部使用裸露的不合格主機(jī)名時(shí)搜索的域名。這些--dns-search 選項(xiàng)由嵌入式 DN S服務(wù)器管理,不會(huì)在容器的/etc/resolv.conf 文件中更新。例如,當(dāng)容器進(jìn)程嘗試訪問主機(jī)并設(shè)置搜索域 example.com 時(shí),DNS 邏輯不僅會(huì)查找主機(jī),還會(huì)查找 host.example.com。 |
--dns-opt=OPTION... | 設(shè)置 DNS 解析器使用的選項(xiàng)。這些選項(xiàng)由嵌入式 DNS 服務(wù)器管理,不會(huì)在容器的/etc/resolv.conf文件中更新。有關(guān)有效選項(xiàng)的列表,請(qǐng)參閱 resolv.conf 的文檔。 |
在不存在的--dns=IP_ADDRESS...
,--dns-search=DOMAIN...
或--dns-opt=OPTION...
選擇,Docker 使用/etc/resolv.conf
主機(jī)(其中的docker
守護(hù)進(jìn)程(daemon)中運(yùn)行)。這樣做時(shí),守護(hù)進(jìn)程(daemon)會(huì)從主機(jī)的原始文件中過濾掉所有本地主機(jī) IP 地址條目nameserver
。
過濾是必要的,因?yàn)橹鳈C(jī)上的所有本地主機(jī)地址都無法從容器的網(wǎng)絡(luò)訪問。在過濾之后,如果容器的/etc/resolv.conf
文件中沒有剩余nameserver
條目,守護(hù)進(jìn)程(daemon)將公共 Google DNS 名稱服務(wù)器(8.8.8.8和8.8.4.4)添加到容器的
DNS 配置中。如果守護(hù)程序啟用了 IPv6,則還將添加公共 IPv6 Google DNS 名稱服務(wù)器(2001:4860:4860 :: 8888和2001:4860:4860 :: 8844)。
注意:如果您需要訪問主機(jī)的本地主機(jī)解析程序,則必須修改主機(jī)上的 DNS 服務(wù)以偵聽可從容器內(nèi)訪問的非本地主機(jī)地址。注意:DNS 服務(wù)器始終處于
127.0.0.11
。