Docker的跨主机网络

本章要点:Docker的跨主机网络-Overlay、Underlay网络模型以及五种模式(Docker Overlay\Macvlan\Flannel\Weave\Calico)

参考来源: Overlay和Underlay网络协议区别及概述讲解 Docker的跨主机网络Docker 三种网络驱动bridge,overlay创建多主机网络共享 overlay纳米ai什么是VXLAN

跨主机网络模型

  • 前提说明

    • Docker默认的网络的类型是bridge, docker容器网络互联,可以在单宿主机网络里面通实现容器间互通
    • 但是跨主机的时候bridge是不可用的,可以使用overlay和underlay实现
  • 跨主机网络模型有两种网模型,其中有五种代表方案

    • 两种网络类型
      • Overlay 网络:建立在 Underlay 之上的虚拟逻辑网络,依赖隧道技术(如 VxLAN)实现跨主机容器通信,不能独立存在,
        • Overlay网络通过在多个主机上创建虚拟的子网来实现这一点,使得这些子网中的容器可以像在同一子网中一样相互通信。这对于构建跨多个Docker主机的服务集群非常有用。
      • Underlay 网络:传统物理基础设施网络(由交换机、路由器组成),是 Overlay 的底层支撑,为其提供实际数据传输服务。
        • 在使用Docker时,可以通过配置Docker容器使用宿主机的网络接口(例如,通过--net=host参数)来让容器直接使用宿主机的网络。这种方式下,容器可以直接访问宿主机的网络堆栈,从而实现与外部世界的直接通信。
      • 二者关系类似 “虚拟机与物理机”:Underlay 是实体基础设施,Overlay 是依托软件虚拟化的上层网络。

Overlay 网络模型详解

  • 核心技术
    • 主流隧道协议为 VxLAN(L2 over L4 封装模式),将二层报文封装到 UDP 传输,突破 “二层域” 规模限制。
    • 需 VTEP(隧道出入口设备)负责报文封包 / 解包,Linux 内核 3.7 + 原生支持 VxLAN 模块。
    • 依赖 key-value 数据库(如 Etcd、Consul)存储网络状态信息(网络、端点、IP 等)。
  • 通信机制
    • 容器报文经宿主机封装后,通过 VTEP 之间的点对点隧道传输,源 VTEP 需通过 “多播” 或 “控制中心(如 Etcd)” 获取目标 VTEP 地址。
    • 支持集中式 / 分布式网关,分布式网关可避免流量瓶颈。
  • 代表方案
    • Docker Overlay、Flannel vxlan、Weave 均属于此类。

Underlay 网络模型详解

  • 核心技术
    • 直接暴露宿主机底层网络接口给容器,无需报文封装,依赖以太网、路由协议等驱动。
    • 主流实现方案有三类:
      • MAC VLAN:虚拟多个独立 MAC 地址的接口,需物理接口工作在混杂模式,适用于本地网络。
      • IP VLAN:共享物理接口 MAC 地址,支持 L2(网桥模式)和 L3(路由模式),兼容防 MAC 欺骗策略。
      • 直接路由:放弃 L2 连通性,通过路由协议(如 BGP)实现 L3 通信,代表方案为 Flannel host-gw、Calico。
  • 代表方案
    • MAC VLAN、IP VLAN、Flannel host-gw、Calico 均属于此类。
代表方案模型
网络模型 类型 数据封装方式 典型协议/技术 性能特点 典型应用场景
Docker Overlay Overlay(高层封装) VxLAN隧道封装(MAC-in-UDP) VxLAN 扩展性好,灵活性高,有封装开销 跨主机容器通信、多租户隔离
Macvlan Underlay(低层直接) 无封装,直接通过物理网络层转发 VLAN 接近物理网络性能,延迟低 高性能需求、低延迟应用
Flannel 混合型 支持VXLAN(Overlay)或Host-gw(Underlay) VXLAN/UDP/host-gw 依赖后端模式,host-gw性能更优 Kubernetes默认网络插件
Weave Overlay(高层封装) VxLAN隧道封装 VxLAN 中等开销,支持加密 安全敏感的跨主机通信
Calico Underlay(低层直接) 无封装,基于BGP路由直连 BGP/IPIP 接近裸机性能,支持高级策略 大规模集群、网络安全策略管控
  • **docker overlay: ** docker swarm init 初始化生成
  • Flannel的混合特性, Flannel支持多种后端,其中:
    • VXLAN模式属于Overlay,需封装数据包;
    • host-gw模式属于Underlay,通过主机路由表直接转发,无封装
  • 性能与场景建议
    • 高性能场景:优先选择Underlay模型(如Macvlan、Calico),避免封装开销;
    • 跨云/大规模扩展:Overlay模型(如Docker Overlay、Weave)更灵活;
    • 策略管控需求:Calico支持细粒度网络策略,适合安全敏感环境。
  • 配置注意事项
    • Overlay网络‌ 需要Docker引擎在每个参与的主机上正确配置,并且通常需要在Docker Swarm模式下使用,因为Overlay网络是为Swarm模式设计的。
    • Underlay网络‌ 需要确保Docker容器能够访问宿主机的网络接口。在某些环境中(如云平台),可能需要额外的配置来允许容器访问宿主机的网络。
    • Bridge网络‌ 主要用于单机环境或需要隔离的简单场景。
选型核心原则
  • 按环境限制选型
    • 虚拟化环境(如 OpenStack)/ 公有云:底层限制多,优先选 Overlay 方案(如 Flannel-vxlan、Weave),公有云建议用厂商专属 CNI 插件(如阿里云 Terway)。
    • 物理机环境:底层限制少,优先选 Underlay / 路由模式(如 Calico-BGP、Flannel-hostgw),避免封装性能损耗。
  • 按需求补充选型
    • 需高扩展性、兼容现有网络:选 Overlay。
    • 需极致性能、多租户隔离:选 Underlay(如 MAC VLAN 适合多租户,Calico 适合精细流量控制)。
  • Overlay 胜在灵活性与兼容性,Underlay 胜在性能与简洁性,实际选型需先明确底层环境是否支持(如公有云 / 虚拟化优先 Overlay),再结合性能、扩展性、隔离性等需求决策。
Overlay 与 Underlay 网络核心差异对比表
对比维度 Overlay 网络 Underlay 网络
核心定义 建立在 Underlay 之上的虚拟逻辑网络,依赖隧道技术实现跨主机通信 传统物理基础设施网络,由交换机、路由器组成,是底层支撑网络
本质属性 软件虚拟化层级,无法独立存在 实体网络设备组成的基础设施层
依赖关系 完全依赖 Underlay 网络提供数据传输服务 为 Overlay 提供底层支撑,可独立运行
核心技术 VxLAN 隧道协议(L2 over L4 封装)、VTEP 设备、key-value 数据库 MAC VLAN、IP VLAN、直接路由(BGP 等协议)
报文处理 需封装 / 解包(二层报文封装到 UDP),有额外开销 无需封装,数据包直接传输
性能表现 因封装开销,性能略低 无额外开销,性能更优
扩展性 支持更多二层网段,突破物理网络限制,灵活性强 受底层物理网络拓扑限制,扩展性较弱
底层要求 对底层网络无特殊要求,兼容性好 有特定限制(如直接路由需主机在同一 L2 网络)
部署复杂度 需配置隧道、VTEP、key-value 数据库,复杂度较高 直接复用物理网络,配置简单,部署便捷
隔离性 基于虚拟网络隔离,隔离效果中等 支持多租户强隔离(如 MAC VLAN 隔离级别高于网桥)
代表方案 Docker Overlay、Flannel vxlan、Weave MAC VLAN、IP VLAN、Flannel host-gw、Calico
适用环境 虚拟化环境(OpenStack)、公有云(底层限制多) 物理机环境(底层限制少)、本地网络
关键限制 VXLAN 报文不能分片,需调整 MTU 值 MAC VLAN 需混杂模式(公有云可能不支持)、部分方案受 MAC 地址数量限制

代表模式示例

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐