天天看點

Docker系列教程18-使用者定義網絡中的内嵌DNS伺服器

原文: 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選項。

影響容器域名服務的各種容器選項。

--name=CONTAINER-NAME

使用

--name

配置的容器名稱用于發現使用者自定義網絡中的容器。 内嵌DNS伺服器維護容器名稱及其IP位址(在容器連接配接的網絡上)之間的映射。

--network-alias=ALIAS

除如上所述的

--name

以外,容器可使用使用者自定義網絡中的一個或多個

--network-alias

(或

docker network connect

指令中的

--alias

選項)發現。 内嵌DNS伺服器維護特定使用者自定義網絡中所有容器别名及IP之間的映射。 通過在

docker network connect

指令中使用

--alias

選項,容器可在不同的網絡中具有不同的别名。

--link=CONTAINER_NAME:ALIAS

run

容器時使用此選項為嵌入式DNS提供了一個名為

ALIAS

的額外條目,指向由

CONTAINER_NAME

辨別的IP位址。 當使用

--link

時,嵌入式DNS将確定隻在使用了

--link

選項的容器上進行本地化查找。 這允許新容器内的程序連接配接到容器,而不必知道其名稱或IP。

--dns=[IP_ADDRESS...]

如果嵌入式DNS伺服器無法從容器中解析名稱、解析請求,嵌入式DNS伺服器将使用

--dns

選項傳遞的IP位址轉發DNS查詢。 這些

--dns

IP位址由嵌入式DNS伺服器管理,不會在容器的

/etc/resolv.conf

檔案中更新。

--dns-search=DOMAIN...

當容器内使用主機名不合格時所設定的域名。這些

--dns-search

選項由嵌入式DNS伺服器管理,不會在容器的

/etc/resolv.conf

檔案中更新。當容器程序嘗試通路

host

并且搜尋域

example.com

被設定時,例如,DNS邏輯不僅将查找

host

,還将查找

host.example.com

--dns-opt=OPTION...

設定DNS解析器使用的選項。 這些選項由嵌入式DNS伺服器管理,不會在容器的

/etc/resolv.conf

檔案中更新。有關有效選項的清單,請參閱

resolv.conf

文檔。

在沒有

--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