您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何進行Docker Swarm集群搭建,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
Docker Swarm提供 Docker 容器集群服務,是 Docker 官方對容器云生態進行支持的核心方案。
使用它,用戶可以將多個 Docker 主機封裝為單個大型的虛擬 Docker 主機,快速打造一套容器云平臺。
注意:Docker 1.12.0+ Swarm mode 已經內嵌入 Docker 引擎,成為了 docker 子命令 docker swarm,絕大多數用戶已經開始使用 Swarm mode,Docker 引擎 API 已經刪除 Docker Swarm。
Docker 1.12 Swarm mode 已經內嵌入 Docker 引擎,成為了 docker 子命令 docker swarm。請注意與舊的 Docker Swarm 區分開來。
Swarm mode 內置 kv 存儲功能,提供了眾多的新特性,比如:具有容錯能力的去中心化設計、內置服務發現、負載均衡、路由網格、動態伸縮、滾動更新、安全傳輸等。使得 Docker 原生的 Swarm 集群具備與 Mesos、Kubernetes 競爭的實力。
Swarm 是使用 SwarmKit 構建的 Docker 引擎內置(原生)的集群管理和編排工具。
使用 Swarm 集群之前需要了解以下幾個概念。
運行 Docker 的主機可以主動初始化一個 Swarm 集群或者加入一個已存在的 Swarm 集群,這樣這個運行 Docker 的主機就成為一個 Swarm 集群的節點 (node) 。
節點分為管理節點 (manager) 和工作節點 (worker) 。
管理節點:用于 Swarm 集群的管理,docker swarm 命令基本只能在管理節點執行(節點退出集群命令 docker swarm leave 可以在工作節點執行)。一個 Swarm 集群可以有多個管理節點,但只有一個管理節點可以成為 leader,leader 通過 raft 協議實現。
工作節點:是任務執行節點,管理節點將服務 (service) 下發至工作節點執行。管理節點默認也作為工作節點。你也可以通過配置讓服務只運行在管理節點。
來自 Docker 官網的這張圖片形象的展示了集群中管理節點與工作節點的關系。
任務 (Task)是 Swarm 中的最小的調度單位,目前來說就是一個單一的容器。
服務 (Services) 是指一組任務的集合,服務定義了任務的屬性。
服務有兩種模式:
replicated services 按照一定規則在各個工作節點上運行指定個數的任務。global services 每個工作節點上運行一個任務兩種模式通過 docker service create 的 --mode 參數指定。
來自 Docker 官網的這張圖片形象的展示了容器、任務、服務的關系。
閱讀 基本概念 一節我們知道 Swarm 集群由 管理節點 和 工作節點 組成。本節我們來創建一個包含一個管理節點和兩個工作節點的最小 Swarm 集群。
準備三臺虛擬機,并安裝Docker:
192.168.199.241 localhost
192.168.199.243 H243
192.168.199.245 H245
在 Docker Machine 一節中我們了解到 Docker Machine 可以在數秒內創建一個虛擬的 Docker 主機,下面我們使用它來創建三個 Docker 主機,并加入到集群中。
使用docker swarm init在本機初始化一個Swarm集群。
docker swarm init --advertise-addr 192.168.199.241
如果你的Docker主機有多個網卡,擁有多個IP,必須使用--advertise-addr指定IP。
執行docker swarm init 命令的節點自動成為管理節點。
執行結果如下,則表明初始化成功:
Swarm initialized: current node (uw3q9lmtglwy3plvcjqv3gunm) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-1zcf4bhlhdarrkw1566xbbt8vrdd91llaj1zhu2nekz56491z2-db9ampabiyc9ynb5fmobr6bob 192.168.199.241:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
在另外兩臺服務器上執行上一步創建管理節點時候的輸出的加入swarm集群的命令。
docker swarm join --token SWMTKN-1-1zcf4bhlhdarrkw1566xbbt8vrdd91llaj1zhu2nekz56491z2-db9ampabiyc9ynb5fmobr6bob 192.168.199.241:2377
結果:
This node joined a swarm as a worker.
如果加入失敗,請檢查管理節點的機器的防火墻是否管理,或者打開對應端口。
如果沒有保存上面加入集群的命令,后面又有一臺機器想加入集群,可通過一下命令獲取加入集群的命令:
## 再次獲取加入集群的命令
docker swarm join-token manager
在管理節點使用docker node ls查看集群
docker node ls
這時候一個最小的集群就搭建好了。
可以將工作節點升級為管理節點,保證管理節點的高可用。在管理節點上運行下面的命令:
## 命令格式
docker node promote 節點 [節點 ...]
## 示例
docker node promote H243 H245
我們使用 docker service 命令來管理 Swarm 集群中的服務,該命令只能在管理節點運行。
在創建好的Swarm集群中運行一個名為nginx的服務。
docker service create --replicas 3 -p 80:80 --name nginx nginx:latest
現在我們使用瀏覽器,輸入任意節點IP,即可看到nginx的默認頁面。
如果想修改服務副本數量,可執行命令:
## 該命令的前提是nginx服務已存在
docker service scale nginx=2
使用 docker service ls 來查看當前 Swarm 集群運行的服務。
docker service ls
使用 docker service ps 來查看某個服務的詳情。
docker service ps nginx
使用 docker service logs 來查看某個服務的日志。
docker service logs nginx
使用 docker service rm 來從 Swarm 集群移除某個服務。
docker service rm nginx
利用Docker Swarm可以快速搭建一個最小集群,也可以在集群上部署服務,但是swarm中并沒有提供統一入口查看節點的資源使用情況。
Portainer是Docker的圖形化管理工具,提供狀態顯示面板、應用模板快速部署、容器鏡像網絡數據卷的基本操作(包括上傳下載鏡像,創建容器,動態擴容等操作)、事件日志顯示、容器控制臺操作、Swarm集群和服務等集中管理和操作、登錄用戶管理和控制等功能。功能十分全面,基本能滿足中小型企業對于容器管理的全部需求。
## 查找Portainer鏡像
docker search portainer
## 拉取鏡像
docker pull portainer/portainer
## 運行容器
docker run -d -p 9000:9000 \
--name portainer --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
portainer/portainer
在瀏覽器中輸入http://192.168.199.241:9000/即可
關于如何進行Docker Swarm集群搭建就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。