Docker 容器的 D:NS ;【是怎么实】现的

2025-07-24 07:56:45      来源:长城网

在日常使用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、自定义网络、多级域名等能力。

  钟自然出生于1962年8月,安徽桐城人,曾在原地质矿产部和原国土资源部工作多年,2014年任原国土资源部党组成员,中国地质调查局局长、党组书记。

责编:赛子璇编辑

两地明确医生可告知艾滋病患者配偶

  据官网介绍,四川绵阳是我国重要国防军工和科研生产基地,邓稼先、于敏等9位“两弹一星”元勋和成千上万的科技精英在这里“干惊天动地事、做隐姓埋名人”。

肖战给化妆师发红包

  根据美国CNBC网站梳理的数据,通用汽车及其合资公司在华市场份额从2015年的15%左右降至去年的8.6%,中国市场盈利占通用汽车全部盈利的比例也有所下降。2022年,斯特兰蒂斯集团表示只在中国地区保留其旗下Jeep品牌的进口业务。

乘客拍下飞机上有人多次吸电子烟

  家住北京朝阳区的资深网球爱好者张先生在接受《环球时报》记者采访时感慨,“原来就不好预约的网球场,在郑钦文夺冠后,更不好约了。”他说:“我经常打球的球馆最早预约时间是提前一周的早上七点,但是现在到点就秒没,手一慢就显示预约完毕。”

肖战给化妆师发红包

  去哪儿数据显示,消息发布后,去哪儿平台“澳大利亚”机票搜索量环比增长四成以上。在去哪儿平台上,飞往澳大利亚的航线覆盖多个城市。悉尼可直飞北京、上海、广州、深圳、成都、杭州、重庆、南京、厦门、天津、济南、西安、海口、郑州、太原等多个城市,暑期从郑州、重庆、天津往返悉尼更便宜,价格在2500元左右。此外,墨尔本可直飞北京、上海、广州、成都、杭州、南京、厦门、青岛、海口等城市,上海、广州也有直飞布里斯班的航班在售。从旅游订单来看,大堡礁、悉尼歌剧院、出海观海豚受到旅客欢迎,8-12日团预订更多。在澳大利亚,旅客可以出海观鲸、看企鹅归巢,体验特色风情。

以伊大规模冲突

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

小米总裁回应去美的学习

  国泰航空之前已在内地开通19个航点,但这次格外用心,为乌鲁木齐航线专门投放了配备可全平躺商务舱座椅的A330-300宽体机,在机载娱乐系统加入了《我的阿勒泰》,商务舱酒单上还出现了新疆产的红酒。/p>

李一桐请喝水的漂亮姐姐

  河南省气候中心6月12日8时发布干旱橙色预警,根据最新气象干旱监测显示,安阳、鹤壁、焦作、开封、洛阳、漯河、南阳、平顶山、濮阳、商丘、新乡、信阳、许昌、郑州、周口、驻马店等16个地市72个国家级气象站监测到气象干旱达到重旱等级以上,并已持续10天。据天气部门预报,6月24日之前,全省将维持高温晴热天气,虽然部分时段有分散对流性降水,但无法有效缓解旱情。/p>

海口铁笼关幼童父亲称不卖孩子

  截至6月13日,全省大、中型水库可用水总量40.48亿立方米,储量充足有保证,按照6月底前无有效降雨的最不利因素考虑,可放水7亿立方米用于抗旱灌溉;南水北调中线工程、大中型水库及河道供水正常,地下水源较充沛,能够满足抗旱需求。5月下旬以来,对全省98.72万眼农田建设灌溉机井和56.85万项灌排沟渠设备进行全面排查,及时修复损坏设施,确保抗旱灌溉需要。省财政近期专门安排3000万抗旱专项资金,支持各地开展抗旱工作。