docker桥接网络高级配置核心是创建精细化控制的自定义bridge网络,解决默认docker0下dns解析缺失、隔离性差、配置僵化等问题;支持子网/网关/ip范围指定、静态ip分配、dns定制、mtu调整及icc开关等。

Docker 桥接网络的高级配置核心在于创建并精细化控制自定义 bridge 网络,而非依赖默认 docker0。它解决默认模式下容器名无法解析、隔离性弱、配置僵化等关键问题。
明确目标:为什么不用默认 docker0?
默认 bridge 网络(docker0)虽开箱即用,但存在明显限制:
– 容器间只能靠 IP 通信,重启后 IP 变更导致连接断裂
– 所有未指定网络的容器自动加入,易造成服务混杂与安全风险
– 子网、MTU、DNS 等参数无法按需调整,且修改需重启 Docker 服务
– 不支持运行时动态连接/断开容器
创建带子网和网关的自定义 bridge 网络
这是最常用也最实用的高级配置起点。通过显式指定 IP 段和网关,避免与其他网络冲突,并便于规划。
- 命令示例:
docker network create --driver bridge \<br> --subnet 192.168.50.0/24 \<br> --gateway 192.168.50.1 \<br> --ip-range 192.168.50.128/25 \<br> myapp-net
-
--subnet:定义整个网络可用地址段(必须) -
--gateway:指定该网络的默认网关(通常为 .1,可选但推荐) -
--ip-range:限定容器实际分配 IP 的范围(如只用后半段),留出前段给静态分配或保留地址
配置 DNS 和自定义 hosts 映射
让容器内应用能稳定访问内部服务或外部域名,无需硬编码 IP 或改应用配置。
- 启动容器时注入 DNS 服务器:
docker run -d --name api --network myapp-net \<br> --dns 192.168.50.100 \<br> --dns-search example.local \<br> my-api-image
-
--dns:指定容器内使用的 DNS 服务器(如公司内网 DNS 或 CoreDNS 实例) -
--dns-search:设置 DNS 搜索域,访问db时自动尝试解析db.example.local - 也可配合
--add-host db:192.168.50.10添加静态 host 条目,适合固定后端或测试环境
在 docker-compose.yml 中声明并复用高级网络
生产环境中推荐用 Compose 统一管理,网络配置更清晰、可版本化。
示例片段:
version: '3.8'<br>
services:<br>
web:<br>
image: nginx<br>
networks:<br>
app-net:<br>
ipv4_address: 192.168.50.10<br>
ports:<br>
- "8080:80"<br>
db:<br>
image: postgres:15<br>
networks:<br>
app-net:<br>
ipv4_address: 192.168.50.11<br>
environment:<br>
POSTGRES_PASSWORD: changeme<br>
networks:<br>
app-net:<br>
driver: bridge<br>
ipam:<br>
config:<br>
- subnet: 192.168.50.0/24<br>
gateway: 192.168.50.1<br>
ip_range: 192.168.50.128/25
- 每个服务可指定固定 IP(
ipv4_address),提升日志追踪与防火墙策略稳定性 -
ipam.config集中定义子网、网关、IP 范围,与 CLI 创建逻辑一致 - 服务名(如
db)在app-net内自动解析为对应 IP,web 容器中直接curl http://db:5432即可
调整底层网络参数(进阶)
针对性能或兼容性需求,可微调网桥行为:
- 设置 MTU(影响大数据包传输效率):
docker network create --driver bridge \<br> --subnet 10.10.20.0/24 \<br> --opt com.docker.network.bridge.mtu=1400 \<br> mtu-net
- 禁用 ICC(Inter-Container Communication),强制容器间通信需显式暴露端口(增强安全):
docker network create --driver bridge \<br> --subnet 10.10.30.0/24 \<br> --opt com.docker.network.bridge.enable_icc=false \<br> secure-net
-
--opt支持多种 bridge 驱动选项,完整列表可通过docker network create --help查看











