overlay 网络是什么
overlay 网络基于隧道封装,把多台主机上的容器接入同一个虚拟网络,是集群模式下服务间通信的基础:不同主机上的容器可以直接按名称互访。单机场景一般用不到它,因为它解决的是跨主机连通问题,同时带来额外的封装开销与端口放通要求。
基本信息
| 用途 | 跨主机容器之间的通信 |
|---|---|
| 前提条件 | 需要先初始化集群模式 |
| 创建方式 | 用指定 overlay 驱动的网络创建命令 |
| 附加选项 | 允许独立容器接入该网络 |
| 依赖 | 主机之间需放通封装使用的端口 |
典型使用场景
- 集群模式下让多主机上的服务直接互访
- 把独立容器接入集群网络,便于调试
- 迁移期让新旧两种部署方式混跑
- 排查跨主机的连通性问题
- 规划多主机网络的网段与端口放通
创建与核对
创建与核对
docker swarm init # 初始化集群模式
docker network create -d overlay --attachable app-overlay # 创建可接入的 overlay 网络
docker network ls --filter driver=overlay # 查看 overlay 网络
docker network inspect app-overlay --format '{{.IPAM.Config}}' # 核对网段配置特性与注意点
| 方面 | 说明 | 注意 |
|---|---|---|
| 跨主机连通 | 不同主机上的容器可直接互访 | 基于隧道封装,存在额外开销 |
| 前提条件 | 需要集群模式 | 单机创建没有意义 |
| 端口依赖 | 主机间需放通封装端口 | 云环境安全组容易漏放 |
| 接入选项 | 独立容器可加入该网络 | 方便调试与迁移期混跑 |
附加选项允许独立容器接入该网络,方便调试与迁移期混跑,不必把容器都改成集群服务形式。
云环境中安全组漏放封装端口,会出现节点之间时通时断的现象,排查跨主机问题时先确认这部分。
创建网络前先规划网段,避免与办公网、虚拟专用网以及现有的其他网络地址段重叠,减少后续路由冲突。