7.1 學習 overlay
網路
overlay
網路 是一個分散式網路 Docker,讓在不同主機上運行的 container 彼此能互相通信。它經常在 container orchestration(例如 Docker Swarm 或 Kubernetes)的背景下使用,為運行於不同節點的 container 提供通信功能。在這堂課中,我們會探討如何建立與使用 overlay
網路,並且提供其應用的範例。
overlay
網路 在現有的網路上建立虛擬分散式網路,將多個主機整合為一個網路空間。這讓 container 間能像是在同一個本地網路中互動,即使它們的主機物理位置不同也不受影響。
使用 overlay
網路的好處:
- 不同主機上的 container 通信: 提供在不同節點上運行的 container 的網絡互動能力。
- 隔離性: 可以為不同的應用程式創建獨立的網路空間。
- 可擴展性: 支持動態新增和移除節點而不影響運行。
7.2 建立 overlay
網路
要建立 overlay
網路,你需要先初始化 Docker Swarm
集群。這個操作會創建管理節點(manager),並允許你創建分佈式網路。
步驟 1: 初始化 Docker Swarm
在你想用作集群管理器的主機上執行這個命令。該命令會初始化 Swarm
集群,並輸出一個用於將其他節點加入集群的命令。
docker swarm init
步驟 2: 將工作節點加入集群
在其他主機上執行 docker swarm init
輸出的命令,將它們加入集群。例如:
docker swarm join --token <SWARM_TOKEN> <MANAGER_IP>:2377
步驟 3: 創建 overlay
網路
在初始化集群後,使用以下命令來創建 overlay
網路:
docker network create -d overlay my_overlay_network
步驟 4: 檢查網路
執行 docker network ls
命令來檢查網路是否成功創建,該命令會列出所有網路,包括新建的 overlay
網路:
docker network ls
範例輸出:
NETWORK ID NAME DRIVER SCOPE
a1b2c3d4e5 my_overlay_network overlay swarm
現在 my_overlay_network
網路已準備好用於分佈式應用程式。
7.3 使用 overlay
網絡
現在,網絡已經建立,你可以運行連接到這個網絡的容器和服務了。
使用 overlay
網絡的服務範例
在 Docker Swarm
中,可以使用服務來管理容器。我們來創建幾個服務,把它們連接到 overlay
網絡。
步驟 1: 創建一個 Web 服務器服務
docker service create --name webserver --network my_overlay_network -p 8080:80 nginx
這條命令創建了一個名為 webserver
的服務,連接到網絡 my_overlay_network
。Web 服務器可以通過地址 http://localhost:8080 訪問。
步驟 2: 創建一個數據庫服務
docker service create --name database --network my_overlay_network -e POSTGRES_PASSWORD=mysecretpassword postgres
這裡創建了一個名為 database
的服務,同樣連接到這個網絡,並設置環境變數 POSTGRES_PASSWORD
。
步驟 3: 驗證服務之間的連接
運行一個臨時容器來測試服務之間的連接:
docker run -it --network my_overlay_network busybox
在容器內使用 ping
命令來測試與 Web 服務器和數據庫的連接:
ping webserver
ping database
如果設置正確,ping 命令將顯示成功連接,證明容器可以通過主機名互相通信。
步驟 4: 查看服務狀態
使用命令 docker service ls
來檢查已創建服務的狀態:
docker service ls
預期的輸出會顯示正在運行的服務的信息,包括他們的狀態和副本數量。
注意: overlay
網絡允許連接到同一個 Swarm
集群的不同主機上的容器之間進行通信。
7.4 在 Docker Compose
中使用 overlay
網路的示例
Docker Compose
簡化了多容器應用程式和網路的管理。你可以在 docker-compose.yml
文件中定義 overlay 網路,並使用它來實現容器之間的通信。
docker-compose.yml
文件示例:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
networks:
- my_overlay_network
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: mysecretpassword
networks:
- my_overlay_network
networks:
my_overlay_network:
driver: overlay
attachable: true
啟動 Docker Compose
:
docker stack deploy -c docker-compose.yml mystack
這個命令將使用 docker-compose.yml
文件部署 stack,並創建連接到 my_overlay_network
網路的服務。
實用建議:
- 網路監控:使用 Docker Swarm 監控工具,比如 Docker Dashboard 或 Prometheus,來跟蹤網路狀態和容器之間的互動。
- 縮放管理:Overlay 網路支持動態添加和刪除節點。確保正確設定網路資源以擴展應用程式。
- 配置備份:定期保存網路和 stack 的配置,以便在發生故障時快速恢復。
GO TO FULL VERSION