首页/云/云与容器速查/自定义 bridge 网络与容器名解析
容器与 Docker106 条

自定义 bridge 网络与容器名解析

默认 docker0 网络只保证 IP 互通、不支持按名字解析;自建 bridge 网络提供内置 DNS,同网络内用容器名即可互访,是 Compose 单机多容器通信的基础。

云与容器速查云更新于 2026-10-13

自定义 bridge 网络是什么

Docker 默认的 docker0 网络只保证 IP 互通,不支持按容器名解析,而且所有容器挤在同一个网段里没有隔离。自建 bridge 网络则提供内置 DNS 与网络隔离:同一网络内的容器用容器名即可互访,这是 Compose 单机多容器通信的基础,也是踩坑最多的地方——服务名能解析的前提是双方在同一个自定义网络里。

基本信息

创建docker network create mynet,默认驱动即 bridge
内置 DNS同网络内容器名与别名自动解析
隔离行为不同自定义网络默认互不可达,需 connect 打通
默认 bridge 缺陷docker0 上只能按 IP 互访,--link 已废弃
连接查看docker network inspect mynet 看已接入的容器列表

典型使用场景

  • 应用与数据库互联:web 用服务名 db 连接数据库,不写死 IP
  • 多项目隔离:两个项目各建网络,同名服务互不干扰
  • 调试联合:把排查用的临时容器接入业务网络,直接用服务名测试
  • 替换机器内容器:重建容器后名字不变,上游无需改配置
  • 限制访问面:数据库只接入应用网络,不暴露给其他容器

典型流程

典型流程
docker network create mynet                     # 创建自定义 bridge 网络
docker run -d --name db --network mynet mysql:8.0
docker run -d --name web --network mynet -e DB_HOST=db nginx:1.27
docker exec web getent hosts db                 # 在 web 内验证名字解析
# 容器重建后 IP 会变但名字不变,应用配置一律写服务名
docker network inspect mynet                    # 查看当前接入的容器与 IP

故障现象对照

现象常见原因处理方式
名称解析失败容器不在同一网络用 network connect 接入,或重建时加 --network
能解析但连不上服务未监听或端口写错在容器内用 ss 与 curl 逐层验证
时通时断网络子网与内网重叠换一个不冲突的网段重建网络
重建后连接失败上游配置写死了容器 IP改为使用服务名而非 IP
跨网络互访失败不同自定义网络默认隔离显式 connect 打通或统一网络
容器重建后 IP 会变化、但容器名不变,因此应用配置一律写服务名。写死容器 IP 是重建后突然连不上的典型原因。
DNS 只解析同一自定义网络内的容器。跨网络调用会报名称解析失败,需要先把容器接入目标网络,而不是怀疑应用或数据库配置。

易错点

  • 容器已在默认 docker0 上,没 connect 新网络就拼服务名,解析必然失败
  • 跨网络直接拼服务名,报名称解析错误却去翻应用日志
  • 服务名与容器名不一致(用了别名或 compose 服务名),连不上时想不通
  • 把容器 IP 写进配置文件,容器重建后连接全部失效

数据来源与参考

  • Docker Docs:Bridge network driver

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌