Ubuntu上配置Overlay网络(以Docker为例)
Overlay网络是Docker实现跨主机容器通信的核心技术,依赖VXLAN(虚拟可扩展局域网)在物理网络之上构建虚拟网络,使不同主机上的容器像在同一局域网中一样通信。以下是详细配置步骤:
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可简化网络管理(若仅需单主机测试,可跳过此步,但多主机场景必须使用Swarm):
docker swarm init
执行后会返回一个加入Swarm的命令(如docker swarm join --token ...),后续添加主机时需用到。
使用docker network create命令创建Overlay网络,需指定--driver overlay,并建议通过--subnet(子网)和--gateway(网关)参数自定义网络配置(避免与现有网络冲突):
docker network create --driver overlay --subnet 10.22.1.0/24 --gateway 10.22.1.1 my_overlay_network
--subnet:定义Overlay网络的IP段(如10.22.1.0/24),需确保与物理网络不重叠。--gateway:指定Overlay网络的网关地址(如10.22.1.1),容器将通过该网关访问外部网络。my_overlay_network:自定义网络名称(可根据需求修改)。启动容器时,通过--network参数将其连接到刚创建的Overlay网络:
docker run -d --name web1 --network my_overlay_network nginx
docker run -d --name web2 --network my_overlay_network nginx
--name:为容器指定名称(如web1、web2)。--network:指定要连接的Overlay网络(如my_overlay_network)。web1和web2可通过Overlay网络直接通信(即使位于不同主机)。进入其中一个容器(如web1),使用ping命令测试与另一个容器的通信:
docker exec -it web1 bash
ping 10.22.1.3 # 替换为web2的IP地址(可通过`docker inspect web2`查看)
若返回64 bytes from ...的响应,说明Overlay网络配置成功。
docker network ls
输出中会显示类型为overlay的网络(如my_overlay_network)。docker network inspect my_overlay_network
可查看网络的子网、网关、连接的容器等信息。docker network rm my_overlay_network
删除后,网络中的容器将失去网络连接。若需为容器配置多个Overlay网络,可重复创建网络并将容器连接到多个网络:
# 创建第二个Overlay网络
docker network create --driver overlay --subnet 10.22.2.0/24 --gateway 10.22.2.1 my_overlay_network_2
# 运行容器并连接到两个网络
docker run -d --name web3 --network my_overlay_network --network my_overlay_network_2 nginx
此时,web3可同时与my_overlay_network和my_overlay_network_2中的容器通信。
docker swarm join命令)。通过以上步骤,即可在Ubuntu上完成Overlay网络的配置,实现跨主机容器的高效通信。