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網絡的配置,實現跨主機容器的高效通信。