1. 程式人生 > 實用技巧 >Docker 基礎知識 - 在生產環境中執行您的應用 - 編排概述

Docker 基礎知識 - 在生產環境中執行您的應用 - 編排概述

容器化流程的可移植性和可再現性意味著我們有機會跨雲和資料中心移動和縮放我們的容器化應用程式。容器有效地保證了這些應用程式在任何地方都以相同的方式執行,從而使我們能夠快速、輕鬆地利用所有這些環境。此外,隨著應用程式規模的擴大,我們需要一些工具來幫助自動化這些應用程式的維護,能夠自動替換失敗的容器,並在這些容器的生命週期中管理更新和配置的上線。

管理、縮放和維護容器化應用程式的工具稱為編排器,其中最常見的例子是 KubernetesDocker Swarm。這兩種編排器的開發環境部署都由 Docker Desktop 提供,我們將在本指南中使用它來建立我們的第一個編排的容器化應用程式。

高階模組教你如何:

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

啟用 Kubernetes

Docker Desktop 將為您快速輕鬆地設定 Kubernetes。按照適用於您的作業系統的設定和驗證說明進行操作:

Windows

  1. 安裝 Docker Desktop 後,您應該會在系統托盤中看到 Docker 圖示。右鍵單擊它,然後導航到 Settings > Kubernetes

  2. 選中標籤為 Enable Kubernetes 的複選框,然後點選 Apply & Restart。Docker Desktop 會自動為您設定 Kubernetes。當您看到設定選單中“Kubernetes running

    ”旁邊的綠燈時,說明 Kubernetes 已經成功啟用。

    譯者注:

    如果看不到 Kubernetes 項,請右鍵單擊系統托盤圖示,選擇 “Switch to Linux containers...” 後,再次導航到 Settings > Kubernetes 檢視。

  3. 為了確認 Kubernetes 已經啟動並正在執行,建立一個名為 pod.yaml 的文字檔案,包含以下內容:

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

    這描述了一個帶有單個容器的 pod,隔離一個簡單的 ping 到 “8.8.8.8”。

  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
    

Mac

與 Windows 類似,具體請參看 https://docs.docker.com/get-started/orchestration/#kubeosx

啟用 Docker Swarm

Docker Desktop 主要執行在 Docker 引擎上,它內建了執行 Swarm 所需的一切。按照適用於您的作業系統的設定和驗證說明進行操作:

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 服務,使用基於 alpin 的檔案系統,並隔離一個 ping 到 8.8.8.8:

    docker service create --name demo alpine:3.5 ping 8.8.8.8
    
  3. 檢查您的服務是否建立了一個正在執行的容器:

    docker service ps demo
    

    你應該會看到這樣的輸出:

    ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
    463j2s3y4b5o        demo.1              alpine:3.5          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
    

Mac

與 Windows 類似,具體請參看 https://docs.docker.com/get-started/orchestration/#swarmosx

結論

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

關於部署到 Kubernetes >>

要了解如何編寫堆疊檔案(stack file)來幫助您在 Swarm 上執行和管理容器,請參閱 部署到 To Swarm

CLI 參考文獻

本文中使用的所有 CLI 命令的進一步文件可以在這裡找到:


作者 : Docker 官網
譯者 : 技術譯民
出品 : 技術譯站
連結 : 英文原文