Docker Swarm
Swarm 是 Docker 官方提供的一款集群管理工具,其主要作用是把若干台 Docker 主机抽象为一个整体,并且通过一个入口统一管理这些 Docker 主机上的各种 Docker 资源。Swarm 和 Kubernetes 比较类似,但是更加轻,具有的功能也较 kubernetes 更少一些。
在Wiki的解释中,Swarm behavior是指动物的群集行为。
-
swarm[swɔːm]
-
n. 一大群(移动中的昆虫);(移动着的)一大群人;(多指发生在火山附近的)地震群;(天文)一大群小型天体同时在空中出现
-
v. (昆虫)成群飞行;(人)蜂涌,涌动;挤满,云集;成群地包围;爬(梯子等),攀
相关术语
Swarm Manager:集群的管理工具,通过swarm manager管理多个节点。
Node:是已加入到swarm的Docker引擎的实例 。
manager nodes:也就是管理节点 ,执行集群的管理功能,维护集群的状态, 选举一个leader节点去执 行调度任务
worker nodes,也就是工作节点 ,接收和执行任务。参与容器集群负载调度, 仅用于承载task
环境准备
- 准备三台已近安装docker engine的centos/Ubuntu系统主机(docker版本必须在 1.12以上的版本,老版本不支持swarm)
- docker容器主机的ip地址固定,集群中所有工作节点必须能访问该管理节点
- 集群管理节点必须使用相应的协议并且保证端口可用 集群管理通信:
- TCP,端口2377
- 节点通信:TCP和UDP,端口7946
- 覆盖型网络(docker网络):UDP,端口4789 overlay driver
docker swarm
- manager node:管理节点
- work node2:计算节点
- work node3:计算节点
创建Docker Swarm
$ docekr swarm init --advertise-addr 191.168.128.130
在该ip机器上执行该条指令,则该节点为管理节点
想该集群中添加工作节点
work1
work 2
$ docker swarm join --token {token code} 192.168.128.130:2377
需要在工作节点也就是说管理节点以外的节点执行以上命令将其挂在上方的管理节点所在的集群上,因此需要最后写上到 管理节点ip+port
### 向该集群部署服务
docker service create --replicas 6 --name=hello hello-word ping docker.com
docker service
特定create
创建服务/容器- –
--replicas *
副本数量 --name=hello
容器/服务名称- ·
hello-word
·所基于的基础镜像 ping docker.com
该服务运行时所执行的命令
、查看该集群中的服务
docker service ls
查看所部署的某服务具体详情
docker service inspect hello
查看所部署的指定服务在该集群节点上的部署分配以及运行情况
docker serivce ps hello
更改 Docker Swarm
集群服务的副本replicas
的数量
- 命令:
$ docker service scale hello=6
- 修改完成后,我们可通过
docker service ps
来查看执行结果
补:继续查看管理节点集群信息与之前的区别
docker node ls
删除集群服务
- 命令:·
docker service re hello
- 查看:
docker service ps
访问网络
默认的 集群网络驱动overlap
并不安全
我们可以自定义网络
- 命令:·
docker network create -d overlay my-overlay
· - 检查:·
docker network ls
·
使用自定义网络创建集群服务
- 命令:
docker service create --network my-overlay --name my-hello --publish 8080:80 -replicas 6 nginx
(nginx 基于nignx镜像来构建的服务) - 检查:
docker service ps
访问?
- 命令:
在浏览器中,使用ip:port查看
- eg:·
192.168.128.126:8080
·
补充
1. 移除集群中的工作节点
- 命令:
docker swarm leave
(在要解除集群的工作节点进行离开该集群) - 检查:
docker node ls
- 检查服务:
docker ps
(当前移除的容器/服务,会自动在其他工作节点进行补充)
2.解散集群(解散小组)
- instruction:
docker swarm leave --force