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