Docker 【容器的】 DN:S 是怎、么实现的

2025-07-23 05:59:20      来源:咸宁网

在日常使用Docker构建微服务架构的过程中,我们经常会遇到一个问题:多个容器之间是如何通过名字互相访问的?DNS是怎么做到的?

从底层机制讲清楚Docker的DNS系统

1.容器间通信的前提:同一个网络

Docker默认会创建一个叫bridge的网桥网络。所有未指定网络的容器,都会被分配到这个bridge网络中。

在这个默认网络中,虽然每个容器都有一个独立的IP地址,但要实现通过容器名访问其他容器,就必须依赖Docker提供的DNS服务。

⚠️注意:只有在用户自定义的bridge网络中,容器名解析才默认开启!默认的bridge网络不支持容器名解析!

2.Docker的内置DNS是如何工作的?

Docker在每个容器启动时,会将容器的/etc/resolv.conf文件指向一个特殊的DNS地址:127.0.0.11

这个地址并不是真的公网DNS,而是DockerDaemon内置的DNS服务器。

这个DNS有以下作用:

解析外部域名(比如访问百度、Google)

解析容器内部服务名(比如web,db等容器名)

它的背后是Docker的embeddedDNSserver,工作机制大概如下:

1️⃣容器发出DNS查询请求(查某个服务名)

2️⃣请求发到127.0.0.11(docker的内部DNS)

3️⃣DockerDNS根据网络配置,找到对应容器的IP地址

4️⃣将结果返回给发起请求的容器

3.实验验证:容器名访问是否生效?

我们创建一个自定义网络,并启动两个容器测试下

#创建一个自定义bridge网络dockernetworkcreatemynet#启动容器A,名字叫webdockerrun-it--rm--nameweb--networkmynetbusyboxsh#启动容器B,在这个网络中尝试pingwebdockerrun-it--rm--networkmynetbusyboxsh

在B容器中输入:

pingweb

你会发现,DNS能自动解析出web的IP,这就说明Docker的内置DNS正常工作啦

4.自定义服务名(别名)怎么设置?

有时候我们希望容器访问的名字不是容器名,而是我们指定的服务名。Docker也支持这一点:

dockerrun-it--rm\--networkmynet\--namemydb\--network-aliasdatabase\busyboxsh

然后在其他容器中,就可以通过database这个名字访问它

5.与外部DNS的协同

Docker的embeddedDNS并不是万能的,它在无法解析服务名时,会把请求转发给/etc/resolv.conf中指定的上游DNS。

这意味着:

外部网络访问正常(比如你容器内pingwww.baidu.com)

内部容器名也能解析

DockerDNS是中间层代理

这个设计非常巧妙!兼顾了内外网的域名解析。

6.容器DNS失效的常见问题

❌没有使用自定义网络,导致DNS解析失败

❌使用了host网络,容器直接共享宿主机网络,无法使用Docker的DNS

❌被resolv.conf修改或者挂载了宿主机DNS文件

❌某些VPN环境导致容器DNS路由异常

解决方法建议:

尽量使用自定义bridge网络

检查/etc/resolv.conf是否被覆盖

检查Docker网络配置dockernetworkinspect

总结

Docker容器之间的DNS解析,其实是靠DockerDaemon内置的DNS服务(监听在127.0.0.11)来实现的,它能让容器通过服务名互相访问,还支持alias、自定义网络、多级域名等能力。

  [环球时报特约记者 任重]英国政府当地时间13日以“打击普京的战争机器”为由宣布50项新制裁,对象包括5家中国实体。中国驻英国使馆发言人当天回应说,英国政府罔顾国内国际民意,不断火上浇油,不但没有反思自己的恶劣行径,反而罗织罪名制裁中国及其他国家企业,充分暴露了英方的虚伪嘴脸。中方敦促英方立即纠正错误,撤销对中国企业的制裁。

责编:蔡玮玲编辑

湖南一溶洞现大量垃圾疑有人居住

  受高空低槽东移影响,16日河南省有分散性阵雨、雷阵雨,雨量分布不均,中西部局部中雨或大雨,并伴有短时强降水、雷暴大风等强对流天气。

品牌大秀鹿晗

  西安咸阳机场T5,与北京大兴机场、成都天府机场航站楼面积相当。三座机场中规模最小的兰州中川机场T3,面积也相当于上海虹桥机场两座航站楼之和。

一念江南官宣预告

  坚持因地制宜、科学抗旱,河库灌区及时开闸放水,增加流量,采取疏通渠道、维修涵闸等措施,做到远送多浇、有水可浇;引黄灌区根据抗旱需水情况,及时开闸放水,争取多引黄河水;平原灌区发挥机电井作用,采取有效措施保障机井通电,并组织投入各类排灌机械179.4万台,努力增加抗旱播种面积。丘陵岗区利用坑、塘、堰、坝等小型水利工程组织抗旱播种。夏播以来,全省累计抗旱浇水7977.3万亩次,播种进度与常年相当。

被通知裁员的黄金一小时

  随着参与网球运动的人逐渐增多,中国网球的基础设施也在不断完善。纪宁告诉《环球时报》记者:“我们在做一个项目,在北京朝阳区规划一个‘大满贯网球文化公园’,将汇集所有大满贯要素。人们既能在此观看全球顶级赛事,也能在场地上训练和比赛。”纪宁说,这仅是一个案例,但从中可以窥见中国网球运动基础设施越来越完善,也越来越专业化。作为体育产业的参与者与观察者,纪宁表示,不仅北京,全国各地网球运动设施也发展得越来越好。

宋威龙鼻子女娲捏了两次

  钟自然严重违反党的政治纪律、组织纪律、廉洁纪律和生活纪律,构成严重职务违法并涉嫌受贿、故意泄露国家秘密犯罪,且在党的十八大后不收敛、不收手,性质严重,影响恶劣,应予严肃处理。

王奥芊带哭音扑赵蕊蕊怀里

  中国名义税负一直高于实际税负。所谓名义税负是指企业名义上该缴纳的税费。由于征管、企业对税法理解等原因,实际上企业不一定足额缴纳法律意义上的税费。/p>

许嵩玫瑰花的葬礼全损音质

  反观乌鲁木齐,偏居西北一隅的位置,为向西开放提供了便利。李瀚明指出,与乌鲁木齐类似的其实是哈萨克斯坦阿拉木图,两座城市都位于亚欧航路的中间点。利用空客A321XLR这样的远程窄体机,阿拉木图成功开航伦敦。在国内,乌鲁木齐是唯一一个用窄体机能直飞欧洲的航空枢纽。/p>

湖南一溶洞现大量垃圾疑有人居住

  对西北城市来说,机场的作用尤为重要。西北不沿海,也没有内河航运。依托铁路和机场打造枢纽,形成开放门户,无论对区域还是全国而言,都具有经济与战略的双重意义。