部署到 Swarm
注意事項
Swarm 模式是管理 Docker Daemon 叢集的進階功能。
如果您打算將 Swarm 作為生產環境執行階段環境,請使用 Swarm 模式。
如果您不打算使用 Swarm 進行部署,請改用 Docker Compose。如果您正在開發 Kubernetes 部署,請考慮使用 Docker Desktop 中的 整合式 Kubernetes 功能。
先決條件
按照 取得 Docker 中的說明下載並安裝 Docker Desktop。
在 Docker 工作坊第 2 部分 中完成將應用程式容器化的步驟
輸入
docker system info
並尋找訊息Swarm: active
(您可能需要稍微向上捲動),確認您的 Docker Desktop 上已啟用 Swarm。如果 Swarm 沒有執行,只需在 shell 提示字元中輸入
docker swarm init
即可設定它。
簡介
現在您已證明應用程式的各個組件可以作為獨立容器執行,並展示了如何使用 Kubernetes 部署它,您可以看看如何安排它們由 Docker Swarm 管理。Swarm 提供了許多用於擴展、網路連線、保護和維護容器化應用程式的工具,超越了容器本身的能力。
為了驗證您的容器化應用程式在 Swarm 上運作良好,您將使用 Docker Desktop 內建的 Swarm 環境在您的開發機器上部署應用程式,然後再將其移交到生產環境中的完整 Swarm 叢集上執行。Docker Desktop 建立的 Swarm 環境功能齊全,這表示它具備您的應用程式在真實叢集中可以享用的所有 Swarm 功能,並且可以從您的開發機器上輕鬆存取。
使用堆疊檔案描述應用程式
Swarm 永遠不會像您在本教學課程的前一個步驟中那樣建立個別容器。相反地,所有 Swarm 工作負載都以服務的形式排程,這些服務是具有 Swarm 自動維護的額外網路功能的可擴展容器群組。此外,所有 Swarm 物件都可以而且應該在稱為堆疊檔案的資訊清單中描述。這些 YAML 檔案描述了 Swarm 應用程式的完整組件和配置,並且可用於在任何 Swarm 環境中建立和銷毀您的應用程式。
現在您可以撰寫一個簡單的堆疊檔案來執行和管理您的 Todo 應用程式,即在教學課程的 第 2 部分 中建立的容器 getting-started
映像檔。將以下內容放置在名為 bb-stack.yaml
的檔案中
注意事項
docker stack deploy
命令使用 Compose V1 使用的舊版 Compose 檔案版本 3 格式。Compose 規格 定義的最新格式與docker stack deploy
命令不相容。有關 Compose 演變的更多資訊,請參閱 Compose 歷史記錄。
version: "3.7"
services:
bb-app:
image: getting-started
ports:
- "8000:3000"
在此 Swarm YAML 檔案中,有一個物件,一個 service
,描述了一個可擴展的相同容器群組。在本例中,您只會得到一個容器(預設值),該容器將基於您在教學課程的 第 2 部分 中建立的 getting-started
映像檔。此外,您還要求 Swarm 將到達您開發機器上連接埠 8000 的所有流量轉發到 getting-started 容器內的連接埠 3000。
Kubernetes 服務和 Swarm 服務非常不同
儘管名稱相似,但這兩個協調器對「服務」一詞的含義卻截然不同。在 Swarm 中,服務同時提供排程和網路功能,建立容器並提供將流量路由到容器的工具。在 Kubernetes 中,排程和網路是單獨處理的,部署(或其他控制器)將容器作為 Pod 進行排程,而服務僅負責為這些 Pod 新增網路功能。
部署並檢查您的應用程式
將您的應用程式部署到 Swarm
$ docker stack deploy -c bb-stack.yaml demo
如果一切順利,Swarm 將報告建立您的所有堆疊物件,且沒有任何錯誤
Creating network demo_default Creating service demo_bb-app
請注意,除了您的服務之外,Swarm 預設還會建立一個 Docker 網路,以隔離作為堆疊一部分部署的容器。
列出您的服務,確保一切正常運作
$ docker service ls
如果一切順利,您的服務將報告已建立 1/1 個副本
ID NAME MODE REPLICAS IMAGE PORTS il7elwunymbs demo_bb-app replicated 1/1 getting-started:latest *:8000->3000/tcp
這表示您要求作為服務一部分的 1/1 個容器已啟動並正在執行。此外,您還會看到開發機器上的連接埠 8000 正被轉發到 getting-started 容器中的連接埠 3000。
開啟瀏覽器並在
localhost:8000
瀏覽您的 Todo 應用程式;您應該會看到您的 Todo 應用程式,與您在教學課程的 第 2 部分 中將其作為獨立容器執行時相同。確認滿意後,請刪除您的應用程式
$ docker stack rm demo
結論
至此,您已成功使用 Docker Desktop 將您的應用程式部署到開發機器上功能齊全的 Swarm 環境。您現在可以將其他組件新增到您的應用程式中,並利用 Swarm 的所有功能和強大功能,就在您自己的機器上。
除了部署到 Swarm 之外,您還將您的應用程式描述為堆疊檔案。這個簡單的文字檔包含了您在執行狀態下建立應用程式所需的一切;您可以將其簽入版本控制並與同事分享,讓您可以將應用程式發佈到其他叢集(例如可能在您的開發環境之後的測試和生產叢集)。
Swarm 和 CLI 參考
本文中使用的所有新 Swarm 物件和 CLI 命令的詳細文件,請參閱此處