全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-21 6 分钟 ✍️ juanwangdev

Overlay 跨主机网络

Overlay 网络实现跨主机容器通信,是 Docker Swarm 的核心网络模式。

Swarm 模式

初始化 Swarm

Bash
# 主节点初始化
docker swarm init --advertise-addr 192.168.1.100

# 输出加入命令
# docker swarm join --token <token> 192.168.1.100:2377

# 查看节点
docker node ls

工作节点加入

Bash
# 在工作节点执行
docker swarm join --token <token> 192.168.1.100:2377

创建 Overlay 网络

Bash
# 创建 overlay 网络
docker network create \
  --driver overlay \
  --subnet 10.0.0.0/24 \
  my-overlay

# 查看网络
docker network ls

部署服务

Bash
# 创建 overlay 网络上的服务
docker service create \
  --name web \
  --network my-overlay \
  --replicas 3 \
  nginx

# 查看服务
docker service ls
docker service ps web

跨主机通信

Bash
# 不同节点的容器可通过服务名通信
# 节点A
docker service create --name web --network my-overlay nginx

# 节点B
docker service create --name app --network my-overlay my-app

# app 可通过 web 访问节点A的容器

Compose 中使用

YAML
version: '3.8'

services:
  web:
    image: nginx
    deploy:
      replicas: 3
    networks:
      - overlay-net

  app:
    image: my-app
    deploy:
      replicas: 2
    networks:
      - overlay-net

networks:
  overlay-net:
    driver: overlay
Bash
# 部署
docker stack deploy -c docker-compose.yml my-stack

Overlay vs Bridge

对比项BridgeOverlay
范围单主机跨主机
驱动bridgeoverlay
需要 Swarm
服务发现容器名服务名
负载均衡内置

VXLAN 封装

text
Overlay 网络使用 VXLAN 封装:

容器包 → VXLAN 封装 → 物理网络 → VXLAN 解封装 → 目标容器
   ↓                        ↓
VTEP (VXLAN Tunnel End Point)

VXLAN 在 UDP 上封装二层帧,实现跨主机虚拟网络。

要点总结

  • Overlay 网络实现跨主机容器通信,需要 Swarm 模式
  • docker swarm init 初始化集群,工作节点加入
  • 使用 --driver overlay 创建跨主机网络
  • 容器通过服务名跨主机解析,内置负载均衡
  • VXLAN 封装实现虚拟二层网络跨物理路由

📝 发现内容有误?点击此处直接编辑

← 上一篇 Host 网络模式
下一篇 → 容器 DNS 与服务发现
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库