Docker Swarm是啥?一文帶你揭開其神秘面紗

作爲一個喜歡嘗試稀奇古怪的自託管服務的人,我得告訴你,容器對於家庭實驗室來說是天賜之物。它們不會消耗太多資源,提供了相當不錯的隔離條件,而且一旦你掌握了那些CLI終端命令(或者如果你更喜歡網頁界面的話,切換到Portainer)就相當容易使用。

但是一旦你深入研究容器這個領域,你可能會有幾十個,就算沒有幾百個的話,應用和服務在容器化環境中運行。Docker Swarm可以幫到你,這裡有一篇簡短的文章來幫助你快速掌握這個很棒的工具。

用專業術語來說,Docker Swarm是一個容器編排平臺,你可以將其部署在多個系統(包括虛擬機)上以有效地管理你的服務。簡單來講,它能讓你在多臺機器上使用Docker環境來擴展你的容器並平衡它們的負載,以滿足你的家庭實驗室需求。如果你熟悉像Proxmox這樣的服務器操作系統,Docker Swarm就類似於普通的集羣,只不過它關注的是運行Docker容器,而不是爲虛擬機提供動力。

就像普通的家庭實驗室集羣一樣,Docker Swarm將節點分爲管理機和工作機。正如你所猜到的,管理節點負責監督集羣的運行,你會經常使用它來將任務分配給其他機器。同時,工作節點負責運行容器,但不參與維護Swarm設置的法定人數。說到這,如果你想要一個高可用性的集羣,你至少需要三個Docker管理節點來維護法定人數。

有趣的是,Docker Swarm使用服務作爲在節點內部署應用程序的關鍵字。因此,在Docker Swarm配置中,您通常要管理多個容器(由同一個鏡像生成)。

如果您正在尋找一個簡單的編排平臺來管理您的容器並確保它們始終保持正常運轉,Docker Swarm將是您家庭服務器的一個很不錯的補充。與Kubernetes一樣,您可以在一堆樹莓派上設置Docker Swarm,並將它們變成一個完整的高可用性集羣,能夠運行您能想到的幾乎所有容器化服務。

但與它的競爭對手不同的是,Docker Swarm的設置和調整相當容易。不必費盡周折去部署一個MicroK8s環境,你只需安裝Docker引擎,並在打算用作管理節點中的主節點的系統上運行命令sudo docker swarm init --通告地址(IP地址) IP_address_of_leader。之後,你可以切換到從節點,運行docker swarm join --token some_token_number 主節點的IP地址:2377命令,然後再用sudo docker node promote 節點名稱將它們提升爲主節點。

此外,Docker Swarm與Portainer兼容,所以如果你不喜歡複雜的終端命令,你就有一個不錯的Web用戶界面可用。當然,Docker Swarm的簡單特性也有其缺點。例如,Kubernetes在自動擴展方面比Swarm要好得多,而且由於它與Docker API綁定,你也確實無法將Podman容器用於其中。

出人意料的是,並非如此。我這個人就喜歡搗鼓不同的容器編排平臺,我敢斷言Swarm是這些平臺中最容易上手的。它用起來真的很容易,不會強迫你去學習複雜的命令,也不需要安裝額外的軟件包來管理容器。當然,對於熱衷於開發運維(DevOps)或者喜愛系統管理(sysadmin)的人來說,它離最好的工具還差得遠呢。但對於普通的家庭實驗室使用者來說,Docker Swarm管理容器化需求是綽綽有餘的。