Ubuntu Overlay网络配置指南(以Docker为例)
Overlay网络是Docker实现跨主机容器通信的核心技术,依赖VXLAN(虚拟可扩展局域网)在物理网络之上构建虚拟网络,使不同主机上的容器像在同一局域网中一样通信。以下是Ubuntu系统上的详细配置步骤:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker
Overlay网络是Docker Swarm的默认网络驱动,初始化Swarm可简化多主机网络管理:
docker swarm init
初始化后会返回一个加入令牌(如docker swarm join --token SWMTKN-1-xxxx...),后续添加主机时需用到。
使用docker network create命令创建Overlay网络,需指定--driver overlay参数,并可自定义子网、网关等参数(避免与现有网络冲突):
docker network create --driver overlay --subnet 10.0.9.0/24 --gateway 10.0.9.1 my-overlay-network
--subnet:指定Overlay网络的私有子网(如10.0.9.0/24);--gateway:指定Overlay网络的网关(如10.0.9.1);my-overlay-network:自定义网络名称(可根据需求调整)。启动容器时,通过--network参数将其连接到刚创建的Overlay网络:
# 在当前主机运行容器
docker run -dit --name container1 --network my-overlay-network ubuntu
# 若为多主机环境,需在其他主机上运行容器并连接到同一Overlay网络
# (需先通过`docker swarm join`将主机加入Swarm集群)
docker run -dit --name container2 --network my-overlay-network ubuntu
容器启动后,会自动获取Overlay网络中的私有IP地址(可通过docker inspect container1查看)。
进入其中一个容器,尝试ping另一个容器的IP地址,验证跨主机通信是否正常:
# 进入container1
docker exec -it container1 bash
# 在container1中ping container2(需替换为container2的实际IP)
ping 10.0.9.2
若返回64 bytes from 10.0.9.2: icmp_seq=1 ttl=64 time=0.123 ms,则表示网络连通正常。
docker network ls
输出中会显示类型为overlay的网络(如my-overlay-network)。docker network inspect my-overlay-network
可查看网络的子网、网关、连接的容器等信息。docker network rm my-overlay-network
删除前需确保无容器连接该网络。若需为容器配置多个Overlay网络,可创建多个网络实例,并在启动容器时指定多个--network参数:
# 创建第二个Overlay网络
docker network create --driver overlay --subnet 10.0.10.0/24 --gateway 10.0.10.1 my-overlay-network-2
# 运行容器并连接到两个Overlay网络
docker run -dit --name web1 --network my-overlay-network --network my-overlay-network-2 nginx
或在docker-compose.yml中配置(适用于多容器编排):
version: '3.8'
services:
web1:
image: nginx
networks:
- my-overlay-network
- my-overlay-network-2
networks:
my-overlay-network:
external: true
my-overlay-network-2:
external: true
部署时使用docker stack deploy -c docker-compose.yml my_stack命令。
通过以上步骤,即可在Ubuntu系统上完成Docker Overlay网络的配置,实现跨主机容器的无缝通信。