swarm是Docker官方提供的叢集管理工具,其主要功能是把若干台Docker主機抽象化為一個整體,並且透過一個入口統一管理這些Docker主機上的各種Docker資源。
本教學操作環境:linux5.9.8系統、docker-1.13.1版、Dell G3電腦。
Swarm是Docker公司推出的用來管理docker叢集的平台,幾乎全部用GO語言來完成的開發的,程式碼開源在https://github.com/docker/swarm, 它是將一群Docker宿主機變成單一的虛擬主機,Swarm使用標準的Docker API介面作為其前端的存取入口,換言之,各種形式的DockerClient(compose,docker-py等)均可直接與Swarm通信,甚至Docker本身都可以很容易的與Swarm集成,這大大方便了用戶將原本基於單節點的系統移植到Swarm上,同時Swarm內置了對Docker網絡插件的支持,用戶也很容易的部署跨主機的容器集群服務。
Swarm 和 Kubernetes 比較類似,但是更輕,具有的功能也比 kubernetes 更少一些。
Docker Swarm 包含兩個面向:一個企業級的 Docker 安全集群,以及一個微服務應用程式編排引擎。
叢集方面,Swarm 將一個或多個 Docker 節點組織起來,使得使用者能夠以叢集方式管理它們。
Swarm 預設內建加密的分散式叢集儲存(encrypted distributed cluster store)、加密網路(Encrypted Network)、公用TLS(Mutual TLS)、安全叢集存取權杖Secure Cluster Join Token)以及一套簡化數位憑證管理的PKI(Public Key Infrastructure)。我們可以自如地新增或刪除節點。
編排方面,Swarm 提供了一套豐富的 API 使得部署和管理複雜的微服務應用變得易如反掌。透過將應用程式定義在聲明式設定檔中,就可以使用原生的 Docker 指令完成部署。
此外,甚至可以執行滾動升級、回滾以及擴縮容操作,同樣基於簡單的命令即可完成。
以往,Docker Swarm 是一個基於 Docker 引擎之上的獨立產品。自 Docker 1.12 版本之後,它已經完全整合在 Docker 引擎中,執行一條指令即可啟用。到 2018 年,除了原生 Swarm 應用,它還可以部署和管理 Kubernetes 應用。
Docker Swarm 初步介紹
從叢集角度來說,一個 Swarm 由一個或多個 Docker 節點組成。這些節點可以是實體伺服器、虛擬機器、樹莓派(Raspberry Pi)或雲端實例。唯一的前提就是要求所有節點透過可靠的網路連接。
節點會被設定為管理節點(Manager)或工作節點(Worker)。管理節點負責叢集控制面(Control Plane),進行監控叢集狀態、分發任務至工作節點等操作。工作節點接收來自管理節點的任務並執行。
Swarm 的設定和狀態資訊保存在一套位於所有管理節點上的分散式 etcd 資料庫中。該資料庫運行於記憶體中,並保持資料的最新狀態。關於這個資料庫最棒的是,它幾乎不需要任何配置,作為 Swarm 的一部分被安裝,無須管理。
關於叢集管理,最大的挑戰在於保證其安全性。搭建 Swarm 叢集時將不可避免地使用 TLS,因為它被 Swarm 緊密整合。
在安全意識日盛的今天,這樣的工具值得大力推廣。 Swarm 使用 TLS 進行通訊加密、節點認證和角色授權。自動密鑰輪換(Automatic Key Rotation)更是錦上添花!其在後台默默進行,使用者甚至感知不到此功能的存在。
關於應用程式編排,Swarm 中的最小調度單元是服務。它是隨 Swarm 引入的,在 API 中是一個新的物件元素,它基於容器封裝了一些高級特性,是一個更高層次的概念。當容器被封裝在一個服務中時,我們稱之為一個任務或一個副本,服務中增加了諸如擴縮容、滾動升級以及簡單回滾等特性。
綜上所述,從概括性的視角來看 Swarm,如下圖所示。
推薦學習:《docker影片教學》
以上是docker swarm是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!