docker1.12 Swarm 模式簡(jiǎn)介
- Docker Engine 1.12 集成了Swarm集群工具.
- 主要使用三個(gè)新的命令行工具創(chuàng)建一個(gè)swarm集群:
2.1. docker swarm 開啟swarm模式; 加入Swarm集群; 配置集群參數(shù)
2.2. docker node 查詢集群節(jié)點(diǎn)信息; 提升/移除一個(gè)管理節(jié)點(diǎn); 管理swarm節(jié)點(diǎn)主機(jī)
2.3. docker service 創(chuàng)建管理 service
創(chuàng)建 Swarm集群
初始化swram集群:
- 注意:只需要在一個(gè)node上初始化swarm集群, 其他node加入這個(gè)集群就行了, 所以一下命令只需要在node01上運(yùn)行.
命令:docker swarm init --advertise-addr 192.168.33.101
其中:--advertise-addr參數(shù), 后面跟你swarm集群的通訊地址, 也就是node01的地址.
范例1:(在10.2.3.222上操作曲掰,初始化docke swarm集群)
docker swarm init --advertise-addr 10.2.3.222
根據(jù)如上命令的提示:
我們的其他節(jié)點(diǎn)服務(wù)器,以worker角色加入swarm集群需要登錄到服務(wù)器運(yùn)行如下命令:
范例2:(在10.2.2.57上操作,將該服務(wù)器添加到docker swarm集群,角色是worker)
docker swarm join --token SWMTKN-1-27bntgu5pjrf1kl45d5wwtdg0k5m67275f8cj8w5psw4vs0uqi-2ufj9wdmemicdbfelhu25p85y 10.2.3.222:2377
以manager角色加入swarm集群:
范例3:(在10.2.2.58上操作,將該服務(wù)器添加到docker swarm集群,角色是manager)
docker swarm join --token SWMTKN-1-27bntgu5pjrf1kl45d5wwtdg0k5m67275f8cj8w5psw4vs0uqi-6drtfk91r9agxymegocsd4626 10.2.3.222:2377
檢查node01docker swarm mode信息:
查看swarm集群node列表
- docker node ls
可以看到,我們的swarm集群中只有一個(gè)節(jié)點(diǎn).現(xiàn)在我們把其他節(jié)點(diǎn)加入我們的集群中:
在node01通過ssh, 在node02-node05上執(zhí)行上面的加入集群命令:
可以看到,我們的swarm集群中只有一個(gè)節(jié)點(diǎn).現(xiàn)在我們把其他節(jié)點(diǎn)加入我們的集群中:
在node01通過ssh, 在node02-node05上執(zhí)行上面的加入集群命令:
如果你不記得上面提示的加入swarm集群的命令和密鑰可以使用如下方式查看worker節(jié)點(diǎn)和manager節(jié)點(diǎn)的加入命令
docker swarm join-token worker
docker swarm join-token manager
再次檢查集群節(jié)點(diǎn)列表, 我們可以看到所有的服務(wù)器都已經(jīng)加入swarm集群了
不過現(xiàn)在我們的集群只有一個(gè)manager節(jié)點(diǎn)node01, 為了swarm集群的高可用,和避免單點(diǎn)故障. 我們希望建立多個(gè)manager節(jié)點(diǎn)集群.
只需要通過如下命令, 提升node02和node03節(jié)點(diǎn)成manager節(jié)點(diǎn):
docker node promote node02 node03
現(xiàn)在我們可以看到, 已經(jīng)有2個(gè)manager節(jié)點(diǎn)了, 一個(gè)Leader節(jié)點(diǎn), 兩個(gè)Reachable節(jié)點(diǎn). 現(xiàn)在你也可以在node02和node03上面管理整個(gè)swarm集群.
在Swarm集群上運(yùn)行service
基本上原來(lái)我們使用docker run的命令, 把前面替換成docker service create就行了.
使用docker service命令去創(chuàng)建容器服務(wù).
docker service create --name test --publish 3022:22 --publish 3080:80 --replicas 3 10.2.3.223:5000/base:v1.2.1_autoserver
- --name 容器名稱
- --publish 端口映射
- --replicas 副本數(shù)
查詢 swarm service列表, 我們可以看到剛剛創(chuàng)建的service:
docker service ls
docker service ps <serviceID>命令可以查看服務(wù)到底跑在哪個(gè)節(jié)點(diǎn)服務(wù)器上:
docker service ps test
Scale擴(kuò)展服務(wù)
將test擴(kuò)展到10副本
docker service scale test=10
查看service進(jìn)程檢查
刪除服務(wù)
使用docker service rm <service ID or Name> 命令刪除服務(wù).
docker service rm test