真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Dockerswarm集群的安裝配置

一、Docker swarm簡(jiǎn)介

Swarm是Docker公司推出的用來管理docker集群的平臺(tái),幾乎全部用GO語言來完成的開發(fā)的,代碼開源在https://github.com/docker/swarm, 它是將一群Docker宿主機(jī)變成一個(gè)單一的虛擬主機(jī),Swarm使用標(biāo)準(zhǔn)的Docker API接口作為其前端的訪問入口,換言之,各種形式的Docker

成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比渾江網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式渾江網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋渾江地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。

Client(compose,docker-py等)均可以直接與Swarm通信,甚至Docker本身都可以很容易的與Swarm集成,這大大方便了用戶將原本基于單節(jié)點(diǎn)的系統(tǒng)移植到Swarm上,同時(shí)Swarm內(nèi)置了對(duì)Docker網(wǎng)絡(luò)插件的支持,用戶也很容易的部署跨主機(jī)的容器集群服務(wù)。

從 Docker 1.12.0 版本開始,Docker Swarm 已經(jīng)包含在 Docker 引擎中(docker swarm),并且已經(jīng)內(nèi)置了服務(wù)發(fā)現(xiàn)工具,我們就不需要像之前一樣,再配置 Etcd 或者 Consul 來進(jìn)行服務(wù)發(fā)現(xiàn)配置了。

Docker swarm中有三種角色:

  • Manager node:負(fù)責(zé)執(zhí)行容器的編排和集群的管理工作,保持并維護(hù)swarm處于期望的狀態(tài),swarm可以有多個(gè)manager node,他們會(huì)自動(dòng)協(xié)商選舉出一個(gè)leader執(zhí)行編排任務(wù);但相反,不能沒有manager node;
  • Worker node:接受并執(zhí)行由manager node派發(fā)的任務(wù),并且默認(rèn)manager node也是一個(gè)work node,不過可以將它設(shè)置manager-only node,讓它負(fù)責(zé)編排和管理工作;
  • Service:用來定義worker上執(zhí)行的命令;

注意:在一個(gè)Docker Swarm群集中,每臺(tái)docker服務(wù)器的角色可以都是manager,但是,不可以都是worker,也就是說,不可以群龍無首,并且,參與群集的所有主機(jī)名,千萬不可以沖突。

二、環(huán)境準(zhǔn)備

Docker swarm集群的安裝配置

注意事項(xiàng):

  • 保證時(shí)間同步;
  • 關(guān)閉防火墻與SElinux(實(shí)驗(yàn)環(huán)境);
  • 更改主機(jī)名;
  • 編寫host文件,保證可以i進(jìn)行域名解析;

三、初始化Swarm群集

[root@node01 ~]# tail -3 /etc/hosts       
192.168.1.1 node01
192.168.1.2 node02
192.168.1.3 node03
//三臺(tái)主機(jī)都需配置hosts文件實(shí)現(xiàn)域名解析的效果
[root@node01 ~]# docker swarm init --advertise-addr 192.168.1.1
//--advertise-addr:指定與其他node通信的地址

命令的返回信息,如圖:
Docker swarm集群的安裝配置
圖中①的命令:以worker身份加入swarm群集中的命令;
②的命令:以manager身份加入swarm群集中的方法;
出現(xiàn)上圖表示初始化成功!注意:--token表示期限為24小時(shí);

四、配置node02、node03加入、離開swarm群集

###################node02的操作如下###################
[root@node02 ~]# docker swarm join --token SWMTKN-1-4pc1gjwjrp9h5dny52j58m0lclq88ngovis0w3rinjd05lklu5-ay18vjhwu7w8gsqvct84fv8ic 192.168.1.1:2377
###################node03的操作如下###################
[root@node03 ~]# docker swarm join --token SWMTKN-1-4pc1gjwjrp9h5dny52j58m0lclq88ngovis0w3rinjd05lklu5-ay18vjhwu7w8gsqvct84fv8ic 192.168.1.1:2377
//node02、node03默認(rèn)是以worker身份加入的
###################node01的操作如下###################
[root@node01 ~]# docker node ls           
//查看節(jié)點(diǎn)詳細(xì)信息(只能是manager身份才可查看)
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
mc3xn4az2r6set3al79nqss7x *   node01              Ready               Active              Leader              18.09.0
olxd9qi9vs5dzes9iicl170ob     node02              Ready               Active                                  18.09.0
i1uee68sxt2puzd5dx3qnm9ck     node03              Ready               Active                                  18.09.0
//可以看出node01、node02、node03的狀態(tài)為Active
###################node02的操作如下###################
[root@node02 ~]# docker swarm leave
###################node03的操作如下###################
[root@node03 ~]# docker swarm leave
//node02、node03申請(qǐng)離開群集
###################node01的操作如下###################
[root@node01 ~]# docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
mc3xn4az2r6set3al79nqss7x *   node01              Ready               Active              Leader              18.09.0
olxd9qi9vs5dzes9iicl170ob     node02              Down                Active                                  18.09.0
i1uee68sxt2puzd5dx3qnm9ck     node03              Down                Active                                  18.09.0
///可以看到node02、node03的狀態(tài)為Down
[root@node01 ~]# docker node rm node02
[root@node01 ~]# docker node rm node03
//node01將node02、node03移除群集
//如果worker節(jié)點(diǎn)沒有辭職,manager節(jié)點(diǎn)可以使用“-f”表示強(qiáng)制開出worker節(jié)點(diǎn)

以上命令可以將某一個(gè)節(jié)點(diǎn)加入、刪除群集。

[root@node01 ~]# docker swarm leave -f
//manager節(jié)點(diǎn)退出swamr群集環(huán)境,這就表示swarm群集解散

不過加入時(shí)是使用worker身份的,如果想要讓節(jié)點(diǎn)是以manager身份加入群集,需要使用以下命令:

[root@node01 ~]# docker swarm join-token manager 
//查詢以manager身份加入群集的命令
[root@node01 ~]# docker swarm join-token worker
//查詢以worker身份加入群集的命令

如圖:
Docker swarm集群的安裝配置

###################node02的操作如下###################
[root@node02 ~]# docker swarm join --token SWMTKN-1-2c0gcpxihwklx466296l5jp6od31pshm04q990n3ssncby3h0c-78rnxee2e990axj0q7td74zod 192.168.1.1:2377
###################node03的操作如下###################
[root@node03 ~]# docker swarm join --token SWMTKN-1-2c0gcpxihwklx466296l5jp6od31pshm04q990n3ssncby3h0c-78rnxee2e990axj0q7td74zod 192.168.1.1:2377
//node02、node03加入群集是以manager身份加入
###################node01的操作如下###################
[root@node01 ~]# docker node ls         //查看節(jié)點(diǎn)的詳細(xì)信息
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
exr8uoww0eih53iujqz5cbv6q *   node01              Ready               Active              Leader              18.09.0
r35f48huyw5hvnkuzatrftj1r     node02              Ready               Active              Reachable           18.09.0
gsg1irl1bywgdsmfawi9rna7p     node03              Ready               Active              Reachable           18.09.0
//從MANAGER STATUS這列就可看出

雖然加入群集時(shí),可以指定使用manager、worker身份,但是也可以通過以下命令,進(jìn)行降級(jí)、升級(jí),操作如下:

[root@node01 ~]# docker node demote node02
[root@node01 ~]# docker node demote node03
//將node02、node03降級(jí)為worker
[root@node01 ~]# docker node promote node02
[root@node01 ~]# docker node promote node03
//將node02、node03升級(jí)為manager
//自行驗(yàn)證

五、部署圖形化UI

部署圖形化UI界面由node01來完成!

[root@node01 ~]# docker run -d -p 8080:8080 -e HOST=172.16.0.10 -e PORT=8080 -v /var/run/docker.sock:/var/run/docker.sock --name visualizer dockersamples/visualizer
//-e HOST指定的是容器

使用瀏覽器訪問:
Docker swarm集群的安裝配置
瀏覽器可以正常訪問,則表示圖形化UI界面部署完成!

六、docker swarm群集的service服務(wù)配置

node01發(fā)布一個(gè)任務(wù),(必須在manager角色的主機(jī)上)運(yùn)行六個(gè)容器,命令如下:

[root@node01 ~]# docker service create --replicas 6  --name web -p 80:80 nginx
// --replicas:副本數(shù)量;大概可以理解為一個(gè)副本就是一個(gè)容器

容器運(yùn)行完成后,可以登錄web頁面進(jìn)行查看,如圖:
Docker swarm集群的安裝配置

注意:如果另外兩臺(tái)節(jié)點(diǎn)服務(wù)器上沒有相應(yīng)的驚醒,則默認(rèn)會(huì)從docker Hub上自動(dòng)進(jìn)行下載!

[root@node01 ~]# docker service ls            //查看創(chuàng)建的service
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
nbfzxltrcbsk        web                 replicated          6/6                 nginx:latest        *:80->80/tcp
[root@node01 ~]# docker service ps web     //查看創(chuàng)建的service都運(yùn)行在那些容器上
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
v7pmu1waa2ua        web.1               nginx:latest        node01              Running             Running 6 minutes ago                       
l112ggmp7lxn        web.2               nginx:latest        node02              Running             Running 5 minutes ago                       
prw6hyizltmx        web.3               nginx:latest        node03              Running             Running 5 minutes ago                       
vg38mso99cm1        web.4               nginx:latest        node01              Running             Running 6 minutes ago                       
v1mb0mvtz55m        web.5               nginx:latest        node02              Running             Running 5 minutes ago                       
80zq8f8252bj        web.6               nginx:latest        node03              Running             Running 5 minutes ago                       

如果現(xiàn)在node02、node03發(fā)生宕機(jī)時(shí),service并不會(huì)因?yàn)楣?jié)點(diǎn)的當(dāng)即而死掉,而是自動(dòng)跑到正常的節(jié)點(diǎn)上。

模擬node02宕機(jī),web頁面如下:
Docker swarm集群的安裝配置

恢復(fù)node02,web頁面如下:
Docker swarm集群的安裝配置

即使node02恢復(fù)正常,也不會(huì)將service分配給node02。

因此,可以得出一個(gè)結(jié)論:如果node發(fā)生故障,service會(huì)自動(dòng)跑到可用的節(jié)點(diǎn)上;反之,如果node沒有發(fā)生故障,默認(rèn)情況下,service不會(huì)輕易更改節(jié)點(diǎn)!

七、實(shí)現(xiàn)service的擴(kuò)容、收縮

擴(kuò)容:就是添加幾臺(tái)service;
收縮:就是減少幾臺(tái)service;

針對(duì)上述環(huán)境實(shí)現(xiàn)收縮、擴(kuò)容;

(1)service擴(kuò)容

[root@node01 ~]# docker service scale web=8
//原本有6個(gè)service,現(xiàn)在增加到8臺(tái)

web頁面如下:
Docker swarm集群的安裝配置
關(guān)于service分配到那臺(tái)node節(jié)點(diǎn)上,是根據(jù)docker swarm自身的算法進(jìn)行分配的。

(2)service收縮

[root@node01 ~]# docker service scale web=4
//原本有8個(gè)service,現(xiàn)在減少到4臺(tái)

web頁面如下:
Docker swarm集群的安裝配置

(3)設(shè)置某個(gè)node不運(yùn)行service

上述環(huán)境中,三臺(tái)都是manager,即使是一臺(tái)manager、兩臺(tái)worker默認(rèn)情況manager也是進(jìn)行工作的,將node02、node03降級(jí)為worker,執(zhí)行如下命令:

[root@node01 ~]# docker node demote node02
[root@node01 ~]# docker node demote node03

如圖:
Docker swarm集群的安裝配置

可以通過設(shè)置,使某臺(tái)節(jié)點(diǎn)不運(yùn)行service,如下:

[root@node01 ~]# docker node update --availability drain node01
//設(shè)置noder01以后不運(yùn)行容器,但已經(jīng)運(yùn)行的容器并不會(huì)停止
// --availability:選項(xiàng)后面共有三個(gè)選項(xiàng)可配置,如下:
active:工作;pause:暫時(shí)不工作;drain:永久性的不工作

web頁面如下:
Docker swarm集群的安裝配置

[root@node01 ~]# docker node update --availability drain node02
//node02也不參加工作,但已經(jīng)運(yùn)行的容器并不會(huì)停止

如圖:
Docker swarm集群的安裝配置

由此可以得出:不是只有manager才有不工作的權(quán)力!

八、docker swarm網(wǎng)絡(luò)

docker swarm集群會(huì)產(chǎn)生兩種不同類型的流量:

  • 控制和管理層面:包括swarm消息管理等,例如請(qǐng)求加入或離開swarm,這種類型的流量總是被加密的(涉及到集群內(nèi)部的hostname、ip-address、subnet、gateway等);
  • 應(yīng)用數(shù)據(jù)層面:包括容器與客戶端的通信等(涉及到 防火墻、端口映射、VIP等);

在swarm中有三個(gè)重要的概念:

  • overlay networks:管理swarm中Docker守護(hù)進(jìn)程間的通信。你可以將服務(wù)附加到一個(gè)或多個(gè)已存在的overlay網(wǎng)絡(luò)上,使得服務(wù)與服務(wù)之間能夠通信;
  • ingress network:是一個(gè)特殊的overlay網(wǎng)絡(luò),用于服務(wù)節(jié)點(diǎn)間的負(fù)載均衡。當(dāng)然任何swarm節(jié)點(diǎn)在發(fā)布的端口上接收到請(qǐng)求后,將請(qǐng)求交給一個(gè)名為IPVS的模塊。IPVS跟蹤參與該服務(wù)的所有IP地址,選擇其中的一個(gè),并通過ingress網(wǎng)絡(luò)將請(qǐng)求到它;
  • docker_gwbridge:是一種橋接網(wǎng)絡(luò),將overlay網(wǎng)絡(luò)(包括ingress網(wǎng)絡(luò))連接到一個(gè)單獨(dú)的Docker守護(hù)進(jìn)程的物理網(wǎng)絡(luò)。默認(rèn)情況下,服務(wù)正在運(yùn)行的每個(gè)容器都連接到本地Docker守護(hù)進(jìn)程主機(jī)的docker_gwbridge網(wǎng)絡(luò);

docker_gwbridge網(wǎng)絡(luò)在初始化Swarm或加入Swarm時(shí)自動(dòng)創(chuàng)建。大多數(shù)情況下,用戶不需要自定義配置,但是Docker允許自定義;

查看node01上默認(rèn)的網(wǎng)絡(luò),如圖:
Docker swarm集群的安裝配置

注意:圖中的SCOPE,注意其作用范圍!

除了Swarm群集默認(rèn)創(chuàng)建的兩個(gè)網(wǎng)絡(luò)以外,我們還可以自定義創(chuàng)建overlay網(wǎng)絡(luò),連接到此網(wǎng)絡(luò)的容器,即可互相通信,,但是需要注意,自定義的網(wǎng)絡(luò)只能是創(chuàng)建的manager主機(jī)才可查看到!

創(chuàng)建自定義overlay網(wǎng)絡(luò)

[root@node01 ~]# docker network create -d overlay --subnet 200.0.0.0/24 --gateway 200.0.0.1 --attachable my_net
//Docker swarm群集創(chuàng)建overlay網(wǎng)絡(luò)時(shí),必須使用--attachable選項(xiàng)來指定名稱,否則其他節(jié)點(diǎn)的容器運(yùn)行時(shí)無法使用此網(wǎng)絡(luò)

創(chuàng)建自定義的overlay網(wǎng)絡(luò)時(shí),必須是manager才可以創(chuàng)建,并且只在manager節(jié)點(diǎn)上才顯示的,別的worker節(jié)點(diǎn)是查看不到的,但是可以使用。
如下:
Docker swarm集群的安裝配置

[root@node02 ~]# docker run -itd --name test01 --ip 200.0.0.10 --network my_net busybox
//node02使用剛才自定義的overlay網(wǎng)絡(luò)創(chuàng)建容器
[root@node03 ~]# docker run -itd --name test02 --network my_net --ip 200.0.0.20 busybox
//node03使用自定義的overlay網(wǎng)絡(luò)創(chuàng)建容器

測(cè)試訪問:
Docker swarm集群的安裝配置
這是node02、node03已經(jīng)使用過這個(gè)自定義的網(wǎng)絡(luò)了,這是在node02、node03上就可以查看到了!
Docker swarm集群的安裝配置
而且基于docker swarm創(chuàng)建的overlay網(wǎng)絡(luò)也符合自定義跨主機(jī)網(wǎng)絡(luò)的特點(diǎn),可以使用主機(jī)名進(jìn)行通信。

九、搭建registry私有倉庫

通過搭建registry私有倉庫,可以便于讓其他node下載鏡像。搭建私有倉庫可以參考Docker搭建私有倉庫

[root@node01 ~]# docker run -itd --name registry -p 5000:5000 -v /registry:/var/lib/registry --restart=always registry:2
[root@node01 ~]# vim /usr/lib/systemd/system/docker.service 
//更改內(nèi)容為
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.1:5000
[root@node01 ~]# systemctl daemon-reload 
[root@node01 ~]# systemctl restart docker
[root@node01 ~]# docker ps -a -q | xargs docker start
//由于剛才創(chuàng)建的容器并沒有設(shè)置自動(dòng)啟動(dòng),所以在重啟docker服務(wù)的時(shí)候,需要手動(dòng)啟動(dòng)
[root@node01 ~]# ssh-keygen -t rsa
[root@node01 ~]# ssh-copy-id root@node02
[root@node01 ~]# ssh-copy-id root@node03
//設(shè)置免密登錄
[root@node01 ~]# scp /usr/lib/systemd/system/docker.service root@node02:/usr/lib/systemd/system/docker.service
[root@node01 ~]# scp /usr/lib/systemd/system/docker.service root@node03:/usr/lib/systemd/system/docker.service
//將docker的配置文件復(fù)制到node02、node03上,因?yàn)閐ocker的配置文件都是一樣的內(nèi)容
[root@node02 ~]# systemctl daemon-reload 
[root@node02 ~]# systemctl restart docker
[root@node03 ~]# systemctl daemon-reload 
[root@node03 ~]# systemctl restart docker
//重新啟動(dòng)node02、node03節(jié)點(diǎn)的docker服務(wù)
[root@node01 ~]# docker pull httpd
[root@node01 ~]# docker tag httpd:latest 192.168.1.1:5000/httpd:latest
[root@node01 ~]# docker push 192.168.1.1:5000/httpd:latest 
//將httpd鏡像上傳到私有倉庫中

十、service服務(wù)版本的升級(jí)與回滾

(1)準(zhǔn)備環(huán)境

[root@node01 ~]# mkdir version{1,2,3,}
[root@node01 ~]# cd version1
[root@node01 version1]# echo "version1" >> index.html
[root@node01 version1]# echo -e "FROM httpd:latest\nADD index.html /usr/local/apache2/htdocs/index.html" > Dockerfile
[root@node01 version1]# docker build -t 192.168.1.1:5000/httpd:v1 .
//version1目錄下模擬生成版本v1
[root@node01 version1]# cp Dockerfile ../version2
[root@node01 version1]# cd !$
cd ../version2
[root@node01 version2]# echo "version2" >> index.html
[root@node01 version2]# docker build -t 192.168.1.1:5000/httpd:v2 .
//vesion2目錄下模擬生成版本v2
[root@node01 version2]# cp Dockerfile ../version3
[root@node01 version2]# cd !$
cd ../version3
[root@node01 version3]# echo "version3" >> index.html
[root@node01 version3]# docker build -t 192.168.1.1:5000/httpd:v3 .
//vesion3目錄下模擬生成版本v3
//注意在主頁面做一些區(qū)分
[root@node01 ~]# docker push 192.168.1.1:5000/httpd:v1
[root@node01 ~]# docker push 192.168.1.1:5000/httpd:v2
[root@node01 ~]# docker push 192.168.1.1:5000/httpd:v3
//將生成的鏡像上傳到私有倉庫
[root@node01 ~]# docker service create --replicas 3 --name httpd 192.168.1.1:5000/httpd:v1
//基于192.168.1.1:5000/httpd:v1創(chuàng)建三個(gè)service副本

瀏覽器訪問測(cè)試:
Docker swarm集群的安裝配置

三個(gè)service副本是輪詢的方式來服務(wù)的,根據(jù)node02、node03的首頁內(nèi)容進(jìn)行測(cè)試!
node02:

[root@node02 ~]# docker ps
CONTAINER ID        IMAGE                       COMMAND              CREATED             STATUS              PORTS               NAMES
b6c1d88fcadf        192.168.1.1:5000/httpd:v1   "httpd-foreground"   4 minutes ago       Up 4 minutes        80/tcp              httpd.1.qubzhexjprpt7s89ku91mlle0
[root@node02 ~]# docker exec -it b6c1d88fcadf /bin/bash
root@b6c1d88fcadf:/usr/local/apache2# echo "node02" >> htdocs/index.html 

node03

[root@node03 ~]# docker ps
CONTAINER ID        IMAGE                       COMMAND              CREATED             STATUS              PORTS               NAMES
ee19c342188c        192.168.1.1:5000/httpd:v1   "httpd-foreground"   5 minutes ago       Up 5 minutes        80/tcp              httpd.3.9ru7zsokixz29iw99qbdp15gn
[root@node03 ~]# docker exec -it ee19c342188c /bin/bash
root@ee19c342188c:/usr/local/apache2# echo "node03" >> htdocs/index.html 

訪問測(cè)試:

[root@node01 ~]# curl 127.0.0.1
version1
node03
[root@node01 ~]# curl 127.0.0.1
version1
[root@node01 ~]# curl 127.0.0.1
version1
node02
//效果已經(jīng)實(shí)現(xiàn) 

(2)版本升級(jí)

[root@node01 ~]# docker service update --image 192.168.1.1:5000/httpd:v2 httpd
//更新容器的鏡像為版本2

瀏覽器進(jìn)行測(cè)試:
Docker swarm集群的安裝配置

默認(rèn)情況下,swarm一次只更新一個(gè)副本,并且兩個(gè)副本之間并沒有等待時(shí)間,可以通過以上方法進(jìn)行設(shè)置。

[root@node01 ~]# docker service update --replicas 6 --image 192.168.1.1:5000/httpd:v3 --update-parallelism 2 --update-delay 1m httpd
//--update-parallelism:設(shè)置更新的副本數(shù)量;
//--update-delay:更新的間隔時(shí)間
// --replicas 6:并在升級(jí)的過程中另外再創(chuàng)建3個(gè)副本

從更新的過程中可以看出效果!

瀏覽器確認(rèn)版本更新成功:
Docker swarm集群的安裝配置

(3)版本回滾

[root@node01 ~]# docker service rollback httpd
//回滾為上一個(gè)版本

瀏覽器訪問測(cè)試:
Docker swarm集群的安裝配置

注意:當(dāng)我們執(zhí)行回滾操作的時(shí)候,默認(rèn)是回滾到上一次操作的版本,并且不可以連續(xù)回滾。

十一、docker Swarm群集常用命令

[root@node02 ~]# docker swarm leave 
//那個(gè)節(jié)點(diǎn)想退出swarm群集,就在那臺(tái)節(jié)點(diǎn)上執(zhí)行這條命令
//節(jié)點(diǎn)自動(dòng)退出swarm群集(相當(dāng)于辭職)
[root@node01 ~]# docker node rm 節(jié)點(diǎn)名稱
//由manager主動(dòng)刪除節(jié)點(diǎn)(相當(dāng)于開除)
[root@node01 ~]# docker node promote 節(jié)點(diǎn)名稱
//將節(jié)點(diǎn)升級(jí)
[root@node01 ~]# docker node demote 節(jié)點(diǎn)名稱
//將節(jié)點(diǎn)降級(jí)
[root@node01 ~]# docker node ls          
//查看swarm群集的信息(只可以在manager角色的主機(jī)上查看)
 [root@node01 ~]# docker node update --availability drain 節(jié)點(diǎn)名稱
 //調(diào)整節(jié)點(diǎn)不參加工作
 [root@node01 ~]# docker swarm join-token worker
//查看加入swarm群集的令牌(可以是worker也可以是manager)
[root@node01 ~]# docker service scale web=4
//擴(kuò)容、收縮swarn群集servie的數(shù)量(取決與群集原本的數(shù)量)
//比原本群集數(shù)量多,就是擴(kuò)容,反之、收縮
[root@node01 ~]# docker service ls
//查看創(chuàng)建的service
[root@node01 ~]# docker service ps service的名稱
//查看創(chuàng)建的service運(yùn)行在那些容器上
[root@node01 ~]# docker service create --replicas 6  --name web -p 80:80 nginx
//指定運(yùn)行的service副本數(shù)量
[root@node01 ~]# docker service create --replicas 3 --constraint node.hostname==node03 --name test nginx
//指定node節(jié)點(diǎn),創(chuàng)建名為test的容器
[root@node01 ~]# docker node update --label-add mem=max node02
//以鍵值對(duì)的方式給docker02主機(jī)打上標(biāo)簽“mem=max”,等號(hào)兩邊的內(nèi)容是可以自定義的
[root@node01 ~]# docker service create --name test1 --replicas 3 --constraint 'node.labels.mem==max' nginx
//基于nginx鏡像在標(biāo)簽為“mem==max”的主機(jī)上運(yùn)行3個(gè)名為test1的服務(wù)
[root@node01 ~]# docker node inspect node02
//標(biāo)簽相關(guān)的信息,在Spec{  }中有顯示

十二、docker swarm總結(jié)

  • 參與群集的主機(jī)名一定不能沖突,并且可以互相解析對(duì)方的主機(jī)名;
  • 集群內(nèi)的所有節(jié)點(diǎn)可以都是manager角色,但是不可以都是worker角色;
  • 當(dāng)指定運(yùn)行的鏡像時(shí),如果群集中的節(jié)點(diǎn)本地沒有該鏡像,那么它將會(huì)自動(dòng)下載對(duì)應(yīng)的鏡像;
  • 當(dāng)群集正常工作時(shí),若一個(gè)運(yùn)行著容器的docker服務(wù)器發(fā)生宕機(jī),那么,其所運(yùn)行的所有容器,都將轉(zhuǎn)移到其他正常運(yùn)行的節(jié)點(diǎn)之上,而且,就算發(fā)生宕機(jī)的服務(wù)器恢復(fù)正常運(yùn)行,也不會(huì)再接管之前運(yùn)行的容器;

網(wǎng)站名稱:Dockerswarm集群的安裝配置
URL標(biāo)題:http://weahome.cn/article/gsceid.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部