CodeGym /Adesua ahorow /Docker SELF /學習 overlay 網絡

學習 overlay 網絡

Docker SELF
等級 18 , 課堂 1
開放

7.1 學習 overlay 網路

overlay 網路 是一個分散式網路 Docker,讓在不同主機上運行的 container 彼此能互相通信。它經常在 container orchestration(例如 Docker Swarm 或 Kubernetes)的背景下使用,為運行於不同節點的 container 提供通信功能。在這堂課中,我們會探討如何建立與使用 overlay 網路,並且提供其應用的範例。

overlay 網路 在現有的網路上建立虛擬分散式網路,將多個主機整合為一個網路空間。這讓 container 間能像是在同一個本地網路中互動,即使它們的主機物理位置不同也不受影響。

使用 overlay 網路的好處:

  1. 不同主機上的 container 通信: 提供在不同節點上運行的 container 的網絡互動能力。
  2. 隔離性: 可以為不同的應用程式創建獨立的網路空間。
  3. 可擴展性: 支持動態新增和移除節點而不影響運行。

7.2 建立 overlay 網路

要建立 overlay 網路,你需要先初始化 Docker Swarm 集群。這個操作會創建管理節點(manager),並允許你創建分佈式網路。

步驟 1: 初始化 Docker Swarm

在你想用作集群管理器的主機上執行這個命令。該命令會初始化 Swarm 集群,並輸出一個用於將其他節點加入集群的命令。

Terminal

docker swarm init

步驟 2: 將工作節點加入集群

在其他主機上執行 docker swarm init 輸出的命令,將它們加入集群。例如:

Terminal

docker swarm join --token <SWARM_TOKEN> <MANAGER_IP>:2377

步驟 3: 創建 overlay 網路

在初始化集群後,使用以下命令來創建 overlay 網路:

Terminal

docker network create -d overlay my_overlay_network

步驟 4: 檢查網路

執行 docker network ls 命令來檢查網路是否成功創建,該命令會列出所有網路,包括新建的 overlay 網路:

Terminal

docker network ls

範例輸出:

Terminal

NETWORK ID     NAME                DRIVER    SCOPE
a1b2c3d4e5     my_overlay_network overlay  swarm

現在 my_overlay_network 網路已準備好用於分佈式應用程式。

7.3 使用 overlay 網絡

現在,網絡已經建立,你可以運行連接到這個網絡的容器和服務了。

使用 overlay 網絡的服務範例

Docker Swarm 中,可以使用服務來管理容器。我們來創建幾個服務,把它們連接到 overlay 網絡。

步驟 1: 創建一個 Web 服務器服務

Terminal

docker service create --name webserver --network my_overlay_network -p 8080:80 nginx

這條命令創建了一個名為 webserver 的服務,連接到網絡 my_overlay_network。Web 服務器可以通過地址 http://localhost:8080 訪問。

步驟 2: 創建一個數據庫服務

Terminal

docker service create --name database --network my_overlay_network -e POSTGRES_PASSWORD=mysecretpassword postgres

這裡創建了一個名為 database 的服務,同樣連接到這個網絡,並設置環境變數 POSTGRES_PASSWORD

步驟 3: 驗證服務之間的連接

運行一個臨時容器來測試服務之間的連接:

Terminal

docker run -it --network my_overlay_network busybox

在容器內使用 ping 命令來測試與 Web 服務器和數據庫的連接:

Terminal

ping webserver
ping database

如果設置正確,ping 命令將顯示成功連接,證明容器可以通過主機名互相通信。

步驟 4: 查看服務狀態

使用命令 docker service ls 來檢查已創建服務的狀態:

Terminal

docker service ls

預期的輸出會顯示正在運行的服務的信息,包括他們的狀態和副本數量。

注意: overlay 網絡允許連接到同一個 Swarm 集群的不同主機上的容器之間進行通信。

7.4 在 Docker Compose 中使用 overlay 網路的示例

Docker Compose 簡化了多容器應用程式和網路的管理。你可以在 docker-compose.yml 文件中定義 overlay 網路,並使用它來實現容器之間的通信。

docker-compose.yml 文件示例

Yaml

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

Terminal

docker stack deploy -c docker-compose.yml mystack

這個命令將使用 docker-compose.yml 文件部署 stack,並創建連接到 my_overlay_network 網路的服務。

實用建議:

  1. 網路監控:使用 Docker Swarm 監控工具,比如 Docker Dashboard 或 Prometheus,來跟蹤網路狀態和容器之間的互動。
  2. 縮放管理:Overlay 網路支持動態添加和刪除節點。確保正確設定網路資源以擴展應用程式。
  3. 配置備份:定期保存網路和 stack 的配置,以便在發生故障時快速恢復。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION