原文: http://www.itmuch.com/docker/18-docker-user-network-embeded-dns/ ,轉載請說明出處。
本節中的資訊涵蓋使用者自定義網絡中的容器的内嵌DNS伺服器操作。連接配接到使用者自定義網絡的容器的DNS lookup與連接配接到預設
bridge
網絡的容器的工作機制不同。
注意 :為了保持向後相容性, 預設 bridge
網絡的DNS配置保持不變, 有關預設網橋中DNS配置的詳細資訊,請參閱 預設網橋中的DNS 。
從Docker 1.10開始,Docker daemon實作了一個内嵌的DNS伺服器,它為任何使用有效
name
、
net-alias
或使用
link
别名所建立的容器提供内置的服務發現能力。 Docker如何管理容器内DNS配置的具體細節可随着Docker版本的改變而改變。 是以你不應該自己管理容器内的
/etc/hosts
/etc/resolv.conf
等檔案,而是使用以下的Docker選項。
影響容器域名服務的各種容器選項。
| 使用 配置的容器名稱用于發現使用者自定義網絡中的容器。 内嵌DNS伺服器維護容器名稱及其IP位址(在容器連接配接的網絡上)之間的映射。 |
---|---|
| 除如上所述的 以外,容器可使用使用者自定義網絡中的一個或多個 (或 指令中的 選項)發現。 内嵌DNS伺服器維護特定使用者自定義網絡中所有容器别名及IP之間的映射。 通過在 指令中使用 選項,容器可在不同的網絡中具有不同的别名。 |
| 在 容器時使用此選項為嵌入式DNS提供了一個名為 的額外條目,指向由 辨別的IP位址。 當使用 時,嵌入式DNS将確定隻在使用了 選項的容器上進行本地化查找。 這允許新容器内的程序連接配接到容器,而不必知道其名稱或IP。 |
| 如果嵌入式DNS伺服器無法從容器中解析名稱、解析請求,嵌入式DNS伺服器将使用 選項傳遞的IP位址轉發DNS查詢。 這些 IP位址由嵌入式DNS伺服器管理,不會在容器的 檔案中更新。 |
| 當容器内使用主機名不合格時所設定的域名。這些 選項由嵌入式DNS伺服器管理,不會在容器的 檔案中更新。當容器程序嘗試通路 并且搜尋域 被設定時,例如,DNS邏輯不僅将查找 ,還将查找 |
| 設定DNS解析器使用的選項。 這些選項由嵌入式DNS伺服器管理,不會在容器的 檔案中更新。有關有效選項的清單,請參閱 文檔。 |
在沒有
--dns=IP_ADDRESS...
,
--dns-search=DOMAIN...
或
--dns-opt=OPTION...
選項的情況下,Docker使用主控端的
/etc/resolv.conf
(
docker daemon
運作的地方)。 在執行此操作時,damon會從主控端的原始檔案中過濾出所有localhost IP位址
nameserver
條目。
過濾是必要的,因為主控端上的所有localhost位址都不可從容器的網絡中通路。過濾之後,如果容器的
/etc/resolv.conf
檔案中沒有更多的
nameserver
條目,daemon會将公共Google DNS名稱伺服器(8.8.8.8和8.8.4.4)添加到容器的DNS配置中。 如果daemon啟用了IPv6,則也會添加公共IPv6 Google DNS名稱伺服器(2001:4860:4860::8888 以及 2001:4860:4860::8844)。
注意 :如果您需要通路主控端的localhost解析器,則必須修改主控端上的DNS服務,以便偵聽從容器内可通路的non-localhost位址。
注意 :DNS伺服器始終為 127.0.0.11
原文
https://docs.docker.com/engine/userguide/networking/configure-dns/參考&拓展閱讀
Docker内置DNS:
https://jimmysong.io/blogs/docker-embedded-dns/Dns:
http://blog.csdn.net/waltonwang/article/details/54098592