首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在用户定义的网络中配置容器DNS(引擎) | Configure container DNS in user-defined networks (Engine)

本节中的信息涵盖了用户定义网络中的容器的嵌入式 DNS 服务器操作。与连接到default bridge网络的容器相比,连接到用户定义网络的容器的 DNS 查找工作方式不同。

注意:为了保持向后兼容性,default bridge网络中的 DNS 配置将保留,而不会改变行为。有关网络中 DNS 配置的更多信息,请参阅默认default bridge网桥中的 DNS 布局 。

从Docker 1.10开始,docker 守护进程实现了一个嵌入式 dns 服务器,它为使用有效的 dns 创建的任何容器提供内建服务发现。namenet-alias或别名为link有关 Docker 如何管理容器内的 DNS 配置的详细信息,可以从一个 Docke r版本更改为下一个版本。因此,您不应该假设文件的方式,例如/etc/hosts/etc/resolv.conf在容器中进行管理,并将文件保持在单独的位置,然后使用以 下Docker 选项。

影响容器域名服务的各种容器选项。

--name = CONTAINER-NAME

使用--name 配置的容器名称用于发现用户定义的泊坞网内的容器。嵌入式 DNS 服务器维护容器名称和其IP地址(在容器连接的网络上)之间的映射。

--network-alias=ALIAS

除了上面描述的名称之外,容器还可以通过其中一个或多个配置的网络别名(或 docker 网络连接命令中的--alias)在用户定义的网络中发现。嵌入式 DNS 服务器维护所有容器别名与其在特定用户定义网络上的 IP 地址之间的映射。通过在 docker network connect 命令中使用--alias 选项,容器可以在不同网络中具有不同的别名。

--link = CONTAINER_NAME:ALIAS

在运行容器时使用此选项可为嵌入式 DNS 添加一个名为 ALIAS 的额外条目,该条目指向由 CONTAINER_NAME 标识的容器的 IP 地址。当使用 - 链接嵌入式 DNS 时,将保证仅在使用--link 的容器上进行本地化查找结果。这使得新容器内的进程可以连接到容器,而无需知道其名称或 IP。

--dns = IP_ADDRESS ...

如果嵌入式 DNS 服务器无法解析来自容器的名称解析请求,则通过--dns 选项传递的 IP 地址将被嵌入式 DNS 服务器用于转发DNS查询。这些--dns IP 地址由嵌入式DNS服务器管理,并且不会在容器的/etc/resolv.conf 文件中更新。

--dns-search=DOMAIN...

设置在容器内部使用裸露的不合格主机名时搜索的域名。这些--dns-search 选项由嵌入式 DN S服务器管理,不会在容器的/etc/resolv.conf 文件中更新。例如,当容器进程尝试访问主机并设置搜索域 example.com 时,DNS 逻辑不仅会查找主机,还会查找 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)中运行)。这样做时,守护进程(daemon)会从主机的原始文件中过滤掉所有本地主机 IP 地址条目nameserver

过滤是必要的,因为主机上的所有本地主机地址都无法从容器的网络访问。在过滤之后,如果容器的/etc/resolv.conf文件中没有剩余nameserver条目,守护进程(daemon)将公共 Google DNS 名称服务器(8.8.8.8和8.8.4.4)添加到容器的 DNS 配置中。如果守护程序启用了 IPv6,则还将添加公共 IPv6 Google DNS 名称服务器(2001:4860:4860 :: 8888和2001:4860:4860 :: 8844)。

注意:如果您需要访问主机的本地主机解析程序,则必须修改主机上的 DNS 服务以侦听可从容器内访问的非本地主机地址。注意:DNS 服务器始终处于127.0.0.11

扫码关注腾讯云开发者

领取腾讯云代金券