部署與編排

容器化提供了將應用程式遷移並擴展到雲端與資料中心的能力。容器能有效確保應用程式在任何環境中以相同方式執行,讓您能快速且輕鬆地利用這些環境。此外,當您擴展應用程式時,需要一些工具來協助自動化應用程式的維護,自動更換故障的容器,並管理容器在生命週期內的更新部署與重新配置。

用於管理、擴展與維護容器化應用程式的工具稱為編排器(Orchestrators)。最流行的兩種編排工具是 Kubernetes 與 Docker Swarm。Docker Desktop 為這兩種編排器提供了開發環境。

進階模組將教您如何:

  1. 在您的開發機器上設定並使用 Kubernetes 環境
  2. 在您的開發機器上設定並使用 Swarm 環境

開啟 Kubernetes

Docker Desktop 能快速且輕鬆地為您設定 Kubernetes。請依照適合您作業系統的設定與驗證說明進行操作:

Mac

  1. 從 Docker 儀表板,瀏覽至設定 (Settings),並選擇 Kubernetes 分頁。

  2. 勾選 啟用 Kubernetes (Enable Kubernetes) 複選框,然後選擇 套用 (Apply)。Docker Desktop 會自動為您設定 Kubernetes。當您在 設定 中看到 'Kubernetes 執行中 (running)' 旁邊出現綠燈時,即表示 Kubernetes 已成功啟用。

  3. 若要確認 Kubernetes 已啟動並執行,請建立一個名為 pod.yaml 的文字檔,內容如下:

    apiVersion: v1
    kind: Pod
    metadata:
      name: demo
    spec:
      containers:
        - name: testpod
          image: alpine:latest
          command: ["ping", "8.8.8.8"]

    這描述了一個包含單一容器的 Pod,該 Pod 對 8.8.8.8 執行簡單的 ping 指令。

  4. 在終端機中,瀏覽至您建立 pod.yaml 的位置並建立您的 Pod:

    $ kubectl apply -f pod.yaml
    
  5. 檢查您的 Pod 是否已啟動並執行:

    $ kubectl get pods
    

    您應該會看到類似以下的內容:

    NAME      READY     STATUS    RESTARTS   AGE
    demo      1/1       Running   0          4s
  6. 確認您是否獲得了 ping 程序應有的記錄:

    $ kubectl logs demo
    

    您應該會看到正常 ping 程序的輸出:

    PING 8.8.8.8 (8.8.8.8): 56 data bytes
    64 bytes from 8.8.8.8: seq=0 ttl=37 time=21.393 ms
    64 bytes from 8.8.8.8: seq=1 ttl=37 time=15.320 ms
    64 bytes from 8.8.8.8: seq=2 ttl=37 time=11.111 ms
    ...
  7. 最後,刪除您的測試 Pod:

    $ kubectl delete -f pod.yaml
    

Windows

  1. 從 Docker 儀表板,瀏覽至設定 (Settings),並選擇 Kubernetes 分頁。

  2. 勾選 啟用 Kubernetes (Enable Kubernetes) 複選框,並選擇 套用 (Apply)。Docker Desktop 會自動為您設定 Kubernetes。當您在 設定 選單中看到 'Kubernetes 執行中 (running)' 旁邊出現綠燈時,即表示 Kubernetes 已成功啟用。

  3. 若要確認 Kubernetes 已啟動並執行,請建立一個名為 pod.yaml 的文字檔,內容如下:

    apiVersion: v1
    kind: Pod
    metadata:
      name: demo
    spec:
      containers:
        - name: testpod
          image: alpine:latest
          command: ["ping", "8.8.8.8"]

    這描述了一個包含單一容器的 Pod,該 Pod 對 8.8.8.8 執行簡單的 ping 指令。

  4. 在 PowerShell 中,瀏覽至您建立 pod.yaml 的位置並建立您的 Pod:

    $ kubectl apply -f pod.yaml
    
  5. 檢查您的 Pod 是否已啟動並執行:

    $ kubectl get pods
    

    您應該會看到類似以下的內容:

    NAME      READY     STATUS    RESTARTS   AGE
    demo      1/1       Running   0          4s
  6. 確認您是否獲得了 ping 程序應有的記錄:

    $ kubectl logs demo
    

    您應該會看到正常 ping 程序的輸出:

    PING 8.8.8.8 (8.8.8.8): 56 data bytes
    64 bytes from 8.8.8.8: seq=0 ttl=37 time=21.393 ms
    64 bytes from 8.8.8.8: seq=1 ttl=37 time=15.320 ms
    64 bytes from 8.8.8.8: seq=2 ttl=37 time=11.111 ms
    ...
  7. 最後,刪除您的測試 Pod:

    $ kubectl delete -f pod.yaml
    

啟用 Docker Swarm

Docker Desktop 主要執行於 Docker Engine 上,後者內建了執行 Swarm 所需的一切。請依照適合您作業系統的設定與驗證說明進行操作:

Mac

  1. 開啟終端機,並初始化 Docker Swarm 模式:

    $ docker swarm init
    

    如果一切順利,您應該會看到類似以下的訊息:

    Swarm initialized: current node (tjjggogqpnpj2phbfbz8jd5oq) is now a manager.
    
    To add a worker to this swarm, run the following command:
    
        docker swarm join --token SWMTKN-1-3e0hh0jd5t4yjg209f4g5qpowbsczfahv2dea9a1ay2l8787cf-2h4ly330d0j917ocvzw30j5x9 192.168.65.3:2377
    
    To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
  2. 執行一個簡單的 Docker 服務,該服務使用 alpine 檔案系統,並對 8.8.8.8 進行 ping:

    $ docker service create --name demo alpine:latest ping 8.8.8.8
    
  3. 檢查您的服務是否已建立一個執行中的容器:

    $ docker service ps demo
    

    您應該會看到類似以下的內容:

    ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
    463j2s3y4b5o        demo.1              alpine:latest       docker-desktop      Running             Running 8 seconds ago
  4. 確認您是否獲得了 ping 程序應有的記錄:

    $ docker service logs demo
    

    您應該會看到正常 ping 程序的輸出:

    demo.1.463j2s3y4b5o@docker-desktop    | PING 8.8.8.8 (8.8.8.8): 56 data bytes
    demo.1.463j2s3y4b5o@docker-desktop    | 64 bytes from 8.8.8.8: seq=0 ttl=37 time=13.005 ms
    demo.1.463j2s3y4b5o@docker-desktop    | 64 bytes from 8.8.8.8: seq=1 ttl=37 time=13.847 ms
    demo.1.463j2s3y4b5o@docker-desktop    | 64 bytes from 8.8.8.8: seq=2 ttl=37 time=41.296 ms
    ...
  5. 最後,刪除您的測試服務:

    $ docker service rm demo
    

Windows

  1. 開啟 PowerShell,並初始化 Docker Swarm 模式:

    $ docker swarm init
    

    如果一切順利,您應該會看到類似以下的訊息:

    Swarm initialized: current node (tjjggogqpnpj2phbfbz8jd5oq) is now a manager.
    
    To add a worker to this swarm, run the following command:
    
        docker swarm join --token SWMTKN-1-3e0hh0jd5t4yjg209f4g5qpowbsczfahv2dea9a1ay2l8787cf-2h4ly330d0j917ocvzw30j5x9 192.168.65.3:2377
    
    To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
  2. 執行一個簡單的 Docker 服務,該服務使用 alpine 檔案系統,並對 8.8.8.8 進行 ping:

    $ docker service create --name demo alpine:latest ping 8.8.8.8
    
  3. 檢查您的服務是否已建立一個執行中的容器:

    $ docker service ps demo
    

    您應該會看到類似以下的內容:

    ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
    463j2s3y4b5o        demo.1              alpine:latest       docker-desktop      Running             Running 8 seconds ago
  4. 確認您是否獲得了 ping 程序應有的記錄:

    $ docker service logs demo
    

    您應該會看到正常 ping 程序的輸出:

    demo.1.463j2s3y4b5o@docker-desktop    | PING 8.8.8.8 (8.8.8.8): 56 data bytes
    demo.1.463j2s3y4b5o@docker-desktop    | 64 bytes from 8.8.8.8: seq=0 ttl=37 time=13.005 ms
    demo.1.463j2s3y4b5o@docker-desktop    | 64 bytes from 8.8.8.8: seq=1 ttl=37 time=13.847 ms
    demo.1.463j2s3y4b5o@docker-desktop    | 64 bytes from 8.8.8.8: seq=2 ttl=37 time=41.296 ms
    ...
  5. 最後,刪除您的測試服務:

    $ docker service rm demo
    

結論

至此,您已確認可以在 Kubernetes 與 Swarm 中執行簡單的容器化工作負載。下一步是編寫一個 YAML 檔案,描述如何執行與管理這些容器。

CLI 參考

本文中使用的所有 CLI 指令的進一步說明文件可在此處取得:

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.