CentOS Overlay网络模式怎么选
CentOS上Overlay网络模式选择指南
一、先明确你的使用场景
仅在单台主机内的容器通信:优先使用bridge,简单、开销小;需要直接复用主机网络时用host(无网络隔离);完全隔离用none。跨主机才考虑overlay。
跨多台CentOS主机编排容器:使用DockerSwarm的overlay(内置、与Swarm服务集成,操作最简)。
跨主机但不用Swarm:使用Docker的overlay+外部键值存储(如Consul/etcd)来维护网络成员信息。
需要给“非Swarm服务容器”接入overlay:创建网络时加–attachable,便于手工把容器连入。
对网络性能极度敏感、可改造底层网络:考虑Macvlan/IPvlan等二层直连方案(非overlay),减少封装开销。
二、常见方案对比与选择建议
| 方案 | 适用场景 | 依赖/前提 | 主要优点 | 主要注意点 |
|---|---|---|---|---|
| bridge(单机) | 单机多容器互通 | 无 | 配置简单、资源占用低 | 不支持跨主机 |
| host(单机) | 需要容器直接使用主机网络栈 | 无 | 网络性能最好、端口直曝 | 端口冲突风险、隔离性差 |
| overlay+Swarm | 多主机容器编排 | DockerSwarm初始化 | 内置跨主机网络、与Swarm服务无缝 | 需维护Swarm集群 |
| overlay+Consul/etcd | 多主机但不用Swarm | 外部KV集群 | 灵活、与编排解耦 | 需额外部署与运维KV |
| Macvlan/IPvlan | 极致性能、可改网络 | 二层网络可达 | 少封装、接近物理性能 | 与宿主机网络耦合、配置复杂 |
说明:Overlay本质是在IP之上封装二层报文(常见为VXLAN/GRE),便于在不改动现有网络的前提下实现跨主机容器网络;在大型集群中相比传统VLAN更具扩展性与灵活性。
三、快速决策步骤
是否跨主机:否→选bridge/host;是→继续。
是否使用DockerSwarm:是→选overlay+Swarm;否→选overlay+Consul/etcd。
是否有“非Swarm服务容器”要加入overlay:是→创建网络时加–attachable。
是否追求极致网络性能且可改造底层网络:是→考虑Macvlan/IPvlan;否则→用overlay。
四、关键配置要点(以CentOS为例)
使用Swarm的overlay
初始化与管理节点:
dockerswarminit;工作节点加入:
dockerswarmjoin--token。:
创建网络:
dockernetworkcreate--driveroverlaymy-overlay(给非Swarm容器接入时加–attachable)。
运行服务/容器:
dockerservicecreate--networkmy-overlaynginx或
dockerrun-d--networkmy-overlaynginx。
使用外部KV(Consul/etcd)的overlay
每台主机配置/etc/docker/daemon.json(示例为Consul):{“cluster-store”:“consul://
重启Docker:
systemctlrestartdocker;创建网络:
dockernetworkcreate--driveroverlaymy-overlay(需要手工接入时用–attachable)。
网络与连通性
可预先规划子网,例如:
dockernetworkcreate--driveroverlay--subnet=10.0.0.0/24--gateway=10.0.0.1my-overlay。
验证:
dockerexec-it<容器名>ping<对端容器IP或名称>。
防火墙与底层网络
放行VXLAN所需UDP端口(默认4789)及节点间管理通信端口,确保UDP/TCP互通。
云上环境注意安全组/NACL策略,避免封装流量被拦截。
五、常见误区与建议
将Docker存储驱动overlay/overlay2与Overlay网络混为一谈:前者是镜像层存储,后者是跨主机容器网络,职责不同。
未放行VXLANUDP4789或节点间通信端口导致“能创建网络但跨主机不通”。
在大型二层广播域中滥用VLAN扩展容器网络:规模与广播风暴风险高,Overlay(如VXLAN)更合适。
过度使用host网络:带来端口冲突与隔离性下降,非必要不建议。

