默认 bridge 是什么
不指定 --network 时,容器接入默认桥接网络 docker0(常见网段 172.17.0.0/16),通过宿主做 NAT 访问外网。它的限制也很明确:默认桥接上的容器之间只能用 IP 互访,不支持按容器名解析。
基本信息
| 用途 | 未指定网络时的默认接入方式 |
|---|---|
| 默认网桥 | docker0,常见网段 172.17.0.0/16 |
| 名称解析 | 默认桥接不提供容器名与别名的 DNS 解析 |
| 出网方式 | 由宿主做 NAT 转发,外部看到的是宿主地址 |
| 推荐做法 | 容器间通信改用自定义 bridge 网络 |
典型使用场景
- 单个容器临时跑一下、不需要与其他容器通信时,用默认网络最省事
- 排查容器间解析不到名字:先确认它们是不是都在默认桥接上
- 理解容器地址为什么是 172.17 开头,避免与真实内网地址段冲突
- 从早期 --link 用法迁移时先看清现状,再切到自定义网络
- 排查容器访问宿主服务的路径与地址是否写对
- 单机验证镜像行为时少写一个网络参数,快速起停
示例
示例
docker run -d --name web nginx:1.27-alpine # 不指定网络即接入默认桥接
docker network inspect bridge --format '{{json .IPAM.Config}}' # 看默认网段
docker exec web ip addr show eth0 # 查看容器地址
docker network create app-net # 建自定义网络(日常推荐)
docker network connect app-net web # 把已有容器接入自定义网络默认桥接与自定义网络对照
| 维度 | 默认 bridge | 自定义 bridge |
|---|---|---|
| 名称解析 | 不支持容器名解析 | 支持容器名与网络别名 |
| 隔离性 | 所有未指定网络的容器共用 | 按网络隔离 |
| 成员构成 | 随容器数量增长而变杂 | 成员清晰可控 |
| 子网调整 | 需改守护进程配置 | 创建时用 --subnet 指定 |
| 推荐度 | 临时验证可用 | 日常与生产的常规选择 |
默认桥接上的容器地址会随重建变化,按 IP 写死的配置迟早失效,跨容器通信应尽早切到自定义网络。
--link 是早期解决名称解析的手段,属于遗留用法,新项目不要再使用,直接用自定义网络的嵌入式 DNS 更清晰。
容器访问宿主上的服务时,要用宿主在桥接网段上的地址(默认网关),写 127.0.0.1 会指向容器自身。