一、背景与意义
为什么 Docker 网络是容器部署的核心?
在微服务、DevOps 和云原生体系中,容器(如 Docker)不再是孤立单元,它们需要:
相互通信(如前后端服务);
与主机通信(如数据库、本地代理);
与外部世界通信(如浏览器、API网关);
安全隔离与访问控制。
因此,容器网络机制是否合理、稳定、安全、可控,直接决定了业务系统的连通性和可观测性。
Docker 原生提供了多种网络模式(Bridge、Host、None、Overlay、Macvlan),满足从单机部署到跨主机集群的不同网络场景。
二、Docker 网络类型(模式对比)
三、默认 Bridge 网络结构(最常见)
[容器1] ─┐
│
docker0 (虚拟网桥) ─── NAT ─── 外部网络
│
[容器2] ─┘
默认网段:
172.17.0.0/16
虚拟网桥:
docker0
,作为容器的默认“网关”容器获取内网 IP(如
172.17.0.2
),使用 NAT 出网
四、创建与管理 Docker 网络(CLI方式)
✅ 查看所有网络
docker network ls
输出示例:
NETWORK ID NAME DRIVER SCOPE
f28e34ad89f7 bridge bridge local
7b8d582bb8a2 host host local
9f5ab21098c4 none null local
✅ 查看某网络详情
docker network inspect bridge
包含:
子网地址(Subnet)
网关地址(Gateway)
已连接容器列表
网络驱动类型(Driver)
✅ 创建自定义 Bridge 网络(推荐用于多容器互联)
docker network create \
--driver bridge \
--subnet 192.168.100.0/24 \
--gateway 192.168.100.1 \
my_bridge_net
说明:
可避免使用默认
docker0
;有助于逻辑隔离多个服务组;
创建后通过
--network
绑定容器。
✅ 使用网络创建容器
docker run -it --name web1 --network my_bridge_net nginx
五、高级网络配置(多主机 & 高性能)
🔧 Host 模式容器
docker run -it --network host busybox
说明:
端口与主机一致,不能做端口映射(-p 失效);
提升性能,减少 NAT 转发消耗;
常用于 DNS、流量转发等系统级服务。
🔧 Overlay 网络(Swarm 模式)
docker network create -d overlay --attachable my_overlay_net
⚠️ 前提:Swarm 集群模式已初始化。Overlay 网络支持容器跨主机通信。
🔧 Macvlan 网络(用于物理隔离)
docker network create -d macvlan \
--subnet=192.168.10.0/24 \
--gateway=192.168.10.1 \
-o parent=eth0 \
macvlan_net
说明:
容器将出现在物理网络中,拥有独立IP;
适合使用静态IP、需被识别为真实主机的场景(如数据库访问控制);
对交换机为 trunk/vlan 模式时,需结合 bridge + macvlan 子接口。
六、常用参数与关键字段说明
七、应用场景案例
📌 场景1:部署多容器应用(如 Web + Redis)
创建自定义 bridge 网络
app_net
Web 和 Redis 均加入
app_net
,通过容器名通信(DNS生效)使用 Nginx/Apache 作为前端入口容器暴露端口
📌 场景2:高性能服务使用 host 网络
Prometheus、DNS 监听主机端口;
避免 NAT 转发,提升时效性;
适合边缘侧或准实时应用。
📌 场景3:跨主机部署(Docker Swarm)
使用
overlay
网络;各节点容器通过 Swarm DNS 自动发现;
适用于微服务集群、Kong 网关、多副本部署等。
八、安全建议
九、总结
Docker 网络机制提供了从简单 NAT 通信到跨主机 Overlay 的完整网络功能体系。其架构设计兼顾了:
开箱即用的默认配置;
可扩展的网络结构(支持 SDN);
支持网络隔离、安全加固与性能调优。
企业在构建 DevOps、微服务平台、国产化基础设施时,应将 容器网络设计作为核心环节之一,结合服务拓扑、安全边界和通信协议等因素,选取合适的网络模式与配置参数。