Bridge 网络模式
Bridge 是 Docker 默认网络模式,下面介绍其原理与配置方法。
docker0 默认网桥
Bash
# 查看默认网桥
docker network ls
# 输出
NETWORK ID NAME DRIVER SCOPE
a1b2c3d4e5f6 bridge bridge local
Bash
# 查看网桥详情
docker network inspect bridge
# 输出
{
"Name": "bridge",
"Driver": "bridge",
"IPAM": {
"Config": [
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
}
]
}
}
默认 bridge 特点
Bash
# 容器连接默认 bridge
docker run -d --name my-nginx nginx
docker run -d --name my-app my-app
通信方式
Bash
# 默认 bridge 下需使用 IP 通信
docker exec my-app curl 172.17.0.2:80
# 不支持 DNS 解析(旧版 Docker)
# 新版 Docker 支持 bridge DNS
默认 bridge 网络中,容器可通过 IP 互通,但 DNS 解析需要自定义网络。
自定义 bridge 网络
Bash
# 创建自定义 bridge
docker network create my-bridge
# 创建时指定子网
docker network create \
--driver bridge \
--subnet 192.168.1.0/24 \
--gateway 192.168.1.1 \
my-bridge
# 查看网络
docker network ls
连接容器到自定义网络
Bash
# 创建容器并加入自定义网络
docker run -d --name web --network my-bridge nginx
docker run -d --name app --network my-bridge my-app
# 容器间可通过名称通信
docker exec app curl web:80
# 容器可加入多个网络
docker network connect my-bridge db
网络隔离
Bash
# 不同网络的容器默认隔离
docker network create frontend
docker network create backend
docker run -d --name web --network frontend nginx
docker run -d --name app --network frontend,backend my-app
docker run -d --name db --network backend postgres
# web 无法直接访问 db(不在同一网络)
# app 可访问 web 和 db(跨网络)
网络配置选项
Bash
# 完整创建参数
docker network create \
--driver bridge \
--subnet 192.168.1.0/24 \
--ip-range 192.168.1.128/25 \
--gateway 192.168.1.1 \
--opt com.docker.network.bridge.name=my-br0 \
--opt com.docker.network.bridge.enable_ip_masquerade=true \
--opt com.docker.network.bridge.enable_icc=true \
my-network
| 选项 | 说明 |
|---|---|
--subnet | 子网地址 |
--gateway | 网关地址 |
--ip-range | IP 分配范围 |
enable_ip_masquerade | IP 伪装(NAT) |
enable_icc | 容器间通信 |
断开网络
Bash
# 容器断开网络
docker network disconnect my-bridge web
# 删除网络
docker network rm my-bridge
# 删除未使用网络
docker network prune
默认 bridge vs 自定义 bridge
| 对比项 | 默认 bridge | 自定义 bridge |
|---|---|---|
| DNS 解析 | 旧版不支持 | 支持 |
| 网络隔离 | 无 | 可隔离 |
| 配置灵活 | 固定 | 可自定义子网等 |
| 推荐度 | ⚠️ | ✅ |
生产环境建议使用自定义 bridge 网络,支持 DNS 解析和隔离。
要点总结
- docker0 是 Docker 默认网桥,子网 172.17.0.0/16
- 默认 bridge 下容器可通过 IP 通信,DNS 解析需自定义网络
- 自定义 bridge 支持 DNS 解析、网络隔离、子网配置
- 容器可加入多个网络实现跨网络通信
- 生产环境推荐使用自定义 bridge 网络
📝 发现内容有误?点击此处直接编辑