部署和編排
容器化提供了一個機會,可以將應用程式遷移和擴充套件到雲和資料中心。容器有效地保證了這些應用程式在任何地方都能以相同的方式執行,使您能夠快速輕鬆地利用所有這些環境。此外,隨著應用程式的擴充套件,您需要一些工具來幫助自動化這些應用程式的維護,自動啟用失敗容器的替換,以及在容器生命週期中管理這些容器的更新和重新配置。
用於管理、擴充套件和維護容器化應用程式的工具稱為編排器。Kubernetes 和 Docker Swarm 是兩種最流行的編排工具。Docker Desktop 為這兩種編排器提供開發環境。
高階模組將教你如何
啟用 Kubernetes
Docker Desktop 為您快速輕鬆地設定 Kubernetes。請按照適合您作業系統的設定和驗證說明進行操作
Mac
從 Docker Dashboard 中,導航到 **設定**,然後選擇 **Kubernetes** 選項卡。
選中標記為 **啟用 Kubernetes** 的複選框,然後選擇 **應用並重啟**。Docker Desktop 將自動為您設定 Kubernetes。當您在 **設定** 中看到 'Kubernetes 正在執行' 旁邊出現綠燈時,您就會知道 Kubernetes 已成功啟用。
要確認 Kubernetes 正在執行,請建立一個名為
pod.yaml
的文字檔案,其中包含以下內容apiVersion: v1 kind: Pod metadata: name: demo spec: containers: - name: testpod image: alpine:latest command: ["ping", "8.8.8.8"]
這描述了一個帶有單個容器的 pod,它將簡單的 ping 隔離到 8.8.8.8。
在終端中,導航到您建立
pod.yaml
的位置,並建立您的 pod$ kubectl apply -f pod.yaml
檢查您的 pod 是否正在執行
$ kubectl get pods
您應該看到類似於以下內容
NAME READY STATUS RESTARTS AGE demo 1/1 Running 0 4s
檢查您是否獲得了 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 ...
最後,拆除您的測試 pod
$ kubectl delete -f pod.yaml
Windows
從 Docker Dashboard 中,導航到 **設定**,然後選擇 **Kubernetes** 選項卡。
選中標記為 **啟用 Kubernetes** 的複選框,然後選擇 **應用並重啟**。Docker Desktop 將自動為您設定 Kubernetes。當您在 **設定** 選單中看到 'Kubernetes 正在執行' 旁邊出現綠燈時,您就會知道 Kubernetes 已成功啟用。
要確認 Kubernetes 正在執行,請建立一個名為
pod.yaml
的文字檔案,其中包含以下內容apiVersion: v1 kind: Pod metadata: name: demo spec: containers: - name: testpod image: alpine:latest command: ["ping", "8.8.8.8"]
這描述了一個帶有單個容器的 pod,它將簡單的 ping 隔離到 8.8.8.8。
在 PowerShell 中,導航到您建立
pod.yaml
的位置,並建立您的 pod$ kubectl apply -f pod.yaml
檢查您的 pod 是否正在執行
$ kubectl get pods
您應該看到類似於以下內容
NAME READY STATUS RESTARTS AGE demo 1/1 Running 0 4s
檢查您是否獲得了 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 ...
最後,拆除您的測試 pod
$ kubectl delete -f pod.yaml
啟用 Docker Swarm
Docker Desktop 主要在 Docker Engine 上執行,Docker Engine 內建了執行 Swarm 所需的一切。請按照適合您作業系統的設定和驗證說明進行操作
Mac
開啟一個終端,並初始化 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.
執行一個簡單的 Docker 服務,該服務使用基於 alpine 的檔案系統,並將 ping 隔離到 8.8.8.8
$ docker service create --name demo alpine:latest ping 8.8.8.8
檢查您的服務是否建立了一個正在執行的容器
$ 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
檢查您是否獲得了 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 ...
最後,拆除您的測試服務
$ docker service rm demo
Windows
開啟一個 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.
執行一個簡單的 Docker 服務,該服務使用基於 alpine 的檔案系統,並將 ping 隔離到 8.8.8.8
$ docker service create --name demo alpine:latest ping 8.8.8.8
檢查您的服務是否建立了一個正在執行的容器
$ 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
檢查您是否獲得了 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 ...
最後,拆除您的測試服務
$ docker service rm demo
結論
此時,您已確認可以在 Kubernetes 和 Swarm 中執行簡單的容器化工作負載。下一步是編寫一個 YAML 檔案,該檔案描述瞭如何執行和管理這些容器。
CLI 參考
本文中使用的所有 CLI 命令的進一步文件可在此處獲取