創(chuàng)建docker swarm集群

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

manager:192.168.1.200

node1:192.168.1.211

node2:192.168.1.212

1.加入管理節(jié)點(diǎn)并初始化swarm(manager上面運(yùn)行)


docker swarm init --advertise-addr 192.168.1.200

執(zhí)行后manager會(huì)自動(dòng)加入到swarm集群,查看命令docker info

image.png

2.將node節(jié)點(diǎn)加入到swarm機(jī)器

a、首先在manager上面執(zhí)行命令:

docker swarm join-token worker

得到如下腳本:

image.png
docker swarm join \

--token SWMTKN-1-2wauqqvmxrv8lri2092xdxf0imhd340038eg8i58hq21kvy0p9-9ojr35v4bnunlcndkegeb72l4 \
192.168.1.200:2377

注意:腳本命令以實(shí)際在manager執(zhí)行docker swarm join-token worker為準(zhǔn)

b、在node端執(zhí)行以上腳本命令即可加入到集群

c、在manager機(jī)器上面執(zhí)行命令查看集群node等信息

image.png

3.基本命令

示例:在swarm部署一個(gè)service集群

3.1 創(chuàng)建

[skc@dev-11 ubt14-hadoop-hbase]$ docker service create --replicas 1 --name helloworld alpine ping [docker.com](http://docker.com/)
u0p8d9j0p8x2bbv9e8w43ztfp

其中, --name 指定了service的名稱; --replicas 指定了需要幾個(gè)task同時(shí)運(yùn)行;alpine ping docker.com 是使用alpine容器執(zhí)行ping docker.com 的命令。

3.2 查看信息

使用docker service inspect --pretty helloworld 來(lái)查看service的信息。

使用docker service ps helloworld 來(lái)查看helloworld的服務(wù)在哪個(gè)節(jié)點(diǎn)上運(yùn)行。
[skc@dev-11 ubt14-hadoop-hbase]$ docker service ps helloworld

ID            NAME              IMAGE          NODE    DESIRED STATE  CURRENT STATE               ERROR                      PORTS

hx9lqu9ksq1v  helloworld.1      alpine:latest  dev-12  Running        Running about a minute ago                             

mejq6j42ozv0   \_ helloworld.1  alpine:latest  dev-11  Shutdown       Failed about a minute ago   "task: non-zero exit (1)"

上圖中出現(xiàn)兩個(gè)task,原因是之前在dev-11上執(zhí)行命令使task掛掉了,swarm自動(dòng)在dev-12上新啟動(dòng)了一個(gè)task。此時(shí)在 dev-12上執(zhí)行 docker ps,可以看到有容器正在運(yùn)行。

[skc@dev-12 ~]$ docker ps

CONTAINER ID        IMAGE                                                                            COMMAND             CREATED              STATUS              PORTS               NAMES

9a075e16a7dd        alpine@sha256:dfbd4a3a8ebca874ebd2474f044a0b33600d4523d03b0df76e5c5986cb02d7e8   "ping [docker.com](http://docker.com/)"   About a minute ago   Up About a minute                       helloworld.1.hx9lqu9ksq1vp9dfx2hs0dlk8

3.3 修改service的task個(gè)數(shù)

$ docker service scale <SERVICE-ID>=<NUMBER-OF-TASKS>

[skc@dev-11 ubt14-hadoop-hbase]$ docker service scale helloworld=2

helloworld scaled to 2

[skc@dev-11 ubt14-hadoop-hbase]$ docker service ps helloworld

ID            NAME              IMAGE          NODE    DESIRED STATE  CURRENT STATE           ERROR                      PORTS

hx9lqu9ksq1v  helloworld.1      alpine:latest  dev-12  Running        Running 10 minutes ago                             

mejq6j42ozv0   \_ helloworld.1  alpine:latest  dev-11  Shutdown       Failed 10 minutes ago   "task: non-zero exit (1)"  

0kxu1cqetga0  helloworld.2      alpine:latest  dev-11  Running        Running 8 seconds ago

3.4 刪除service

docker service rm helloworld

3.5 更改節(jié)點(diǎn)的availablity狀態(tài)

swarm集群中node的availability狀態(tài)可以為 active或者drain。其中active狀態(tài)下,node可以接受來(lái)自manager節(jié)點(diǎn)的任務(wù)分派;而drain狀態(tài)下,node節(jié)點(diǎn)會(huì)結(jié)束task,且不再接受來(lái)自manager節(jié)點(diǎn)的任務(wù)分派。
$ docker node update --availability drain worker1

$ docker node update --availability active worker1

創(chuàng)建xxbmm-shop商城swarm集群

docker service create \

--name shop-service \

--replicas 3 \

-p 9091:8081 \

--mount type=bind,source=/home/xxbmm/src/webapps,destination=/opt/local/tomcat8/webapps \

--mount type=bind,source=/root/logs,destination=/opt/local/tomcat8/logs \

xxbmm.shop_07271053/centos7:07271053

![image.png](https://upload-images.jianshu.io/upload_images/15631858-5078d425aa30f4e8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![image.png](https://upload-images.jianshu.io/upload_images/15631858-9661173b7d011dab.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![image.png](https://upload-images.jianshu.io/upload_images/15631858-268bc6a71b2a0698.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

觀察到有啟動(dòng)失敗的,3個(gè)service只啟動(dòng)了1個(gè),原因是另外兩臺(tái)node機(jī)器內(nèi)存不足無(wú)法啟動(dòng)service

查看服務(wù)詳細(xì)信息

詳細(xì)信息

外部可通過(guò)[http://192.168.1.200:9091/)訪問(wèn)

端口9091

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容