Docker Swarm資源管理
Docker Swarm是Docker官方三劍客項(xiàng)目之一,提供Docker容器集群服務(wù),是Docker官方對容器云生態(tài)進(jìn)行支持的核心方案。
使用它,用戶可以將多個(gè)Docker主機(jī)封裝為單個(gè)大型的虛擬Docker主機(jī),快速打造一套容器云平臺(tái)。
注意:Docker1.12.0之后版本,Swarm模塊已經(jīng)內(nèi)嵌入Docker引擎,成為Docker子命令docker swarm,絕大多用戶已經(jīng)開始使用Swarm模塊,Docker引擎API已經(jīng)刪除Docker Swarm。
基本概念
Swarm是使用SwarmKit構(gòu)建的Docker引擎內(nèi)置(原生)的集群管理和編排工具。使用Swarm集群之前需要了解以下幾個(gè)概念。
節(jié)點(diǎn)
運(yùn)行Docker的主機(jī)可以主動(dòng)初始化一個(gè)Swarm集群或者加入一個(gè)已存在的Swarm集群,這樣運(yùn)行Docker的主機(jī)就成為一個(gè)Swarm集群的節(jié)點(diǎn)(node)。
節(jié)點(diǎn)分為管理(manager)節(jié)點(diǎn)和工作(worker)節(jié)點(diǎn)。
- 管理節(jié)點(diǎn)用于Swarm集群的管理,docker swarm集合基本只能在管理節(jié)點(diǎn)執(zhí)行。
- 工作節(jié)點(diǎn)是任務(wù)執(zhí)行節(jié)點(diǎn),管理節(jié)點(diǎn)將服務(wù)(service)下發(fā)至工作節(jié)點(diǎn)執(zhí)行。
集群中管理節(jié)點(diǎn)與工作節(jié)點(diǎn)的關(guān)系
服務(wù)和任務(wù)
任務(wù)(Task)是Swarm中的最小的調(diào)度單位,目前來說就是一個(gè)單一的容器。
服務(wù)(Services)是指一組任務(wù)的集合,服務(wù)定義了任務(wù)的屬性。
服務(wù)有兩種模式:
- replicated services 按照一定規(guī)則在各個(gè)工作節(jié)點(diǎn)上運(yùn)行指定個(gè)數(shù)的任務(wù)。
- global services每個(gè)工作節(jié)點(diǎn)運(yùn)行一個(gè)任務(wù)
兩個(gè)模式通過docker service create的–mode參數(shù)指定
容器、任務(wù)、服務(wù)的關(guān)系
創(chuàng)建Swarm集群
了解Swarm集群由管理節(jié)點(diǎn)和工作節(jié)點(diǎn)組成后,我們創(chuàng)建一個(gè)包含一個(gè)管理節(jié)點(diǎn)和兩個(gè)工作節(jié)點(diǎn)的最小Swarm集群。
初始化集群
使用docker swarm init在本地初始化一個(gè)Swarm集群。
docker swarm init --advertise-addr 192.168.1.1
如果你的Docker主機(jī)有多個(gè)網(wǎng)段,擁有多個(gè)IP,必須使用–advertise-addr指定IP。執(zhí)行docker swarm init命令的節(jié)點(diǎn)自動(dòng)成為管理節(jié)點(diǎn)。
注意:使用docker swarm init
增加工作節(jié)點(diǎn)
在另外兩臺(tái)服務(wù)器上執(zhí)行上一步創(chuàng)建管理節(jié)點(diǎn)時(shí)候的輸出的加入swarm集群的全集
docker swarm join --token SWMTKN-1-3pu6hszjas19xyp7ghgosyx9k8atbfcr8p2is99znpy26u2lkl-1awxwuwd3z9j1z3puu7rcgdbx 192.168.1.1:2377
查看集群
在管理節(jié)點(diǎn)使用docker node ls查看集群。
docker node ls
部署服務(wù)
使用docker service命令來管理Swarm集群中的服務(wù),該命令只能在管理節(jié)點(diǎn)運(yùn)行。
新建服務(wù)
在創(chuàng)建好的Swarm集群中運(yùn)行nginx服務(wù)
docker service create --replicas 3 -p 80:80 --name nginx nginx:latest
現(xiàn)在我們使用瀏覽器,輸入任意節(jié)點(diǎn)IP,即可看到nginx默認(rèn)頁面。
查看服務(wù)
查看當(dāng)前Swarm集群運(yùn)行的服務(wù)
docker service ls
查看某個(gè)服務(wù)的詳情
docker service ps nginx
查看某個(gè)服務(wù)的日志
docker service logs nginx
刪除服務(wù)
從Swarm集群中移除某個(gè)服務(wù)
docker service rm nginx
資源管理
前面利用Docker Swarm快速搭建一個(gè)最小集群,也可以在集群上部署服務(wù),但是會(huì)發(fā)現(xiàn)swarm中并沒有提供統(tǒng)一入口查看節(jié)點(diǎn)的資源使用情況。這時(shí)我們可以用圖形化管理工具Portainer幫我們管理swarm集群。
Portainer是Docker的圖形化管理工具,提供狀態(tài)顯示面板、應(yīng)用模板快速部署、容器鏡像網(wǎng)絡(luò)數(shù)據(jù)卷的基本操作(包括上傳下載鏡像、創(chuàng)建容器等操作)、事件日志顯示、容器控制臺(tái)操作、Swarm集群和服務(wù)等集中管理和操作、登陸用戶管理和控制等功能。功能十分全面,基本能滿足小型單位對容器管理的全部需求。
Portainer集群運(yùn)行
下載Portainer鏡像
#查詢當(dāng)前有哪些Portainer鏡像 docker search portainer docker pull portainer/portainer
安裝Portainer(管理節(jié)點(diǎn))
docker run -d -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
Portainer配置
設(shè)置管理員帳號(hào)密碼
Portainer界面內(nèi)容