環(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



觀察到有啟動(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