简介
Docker Swarm是Docker公司推出的的集群管理工具,几乎全部用GO语言来完成的开发
Docker Swarm 和 Docker Compose 一样,都是 Docker 官方容器编排项目,但不同的是,Docker Compose 是一个在单个服务器或主机上创建多个容器的工具,而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务,对于微服务的部署,显然 Docker Swarm 会更加适合。
工作原理
swarm 集群由管理节点(manager)和工作节点(work node)构成。
swarm mananger:负责整个集群的管理工作包括集群配置、服务管理等所有跟集群有关的工作。
work node:即图中的 available node,主要负责运行相应的服务来执行任务(task)。
Swarm的调度策略
- Random:随机选择一个Node来运行容器
- Spread:选择运行容器最少的那台节点来运行新的容器
- Binpack:选择运行容器最集中的那台机器来运行新的节点
实验
准备三台主机,都安装好docker,关闭防火墙,开放2377/tcp(管理端口)、7946/udp(节点间通信端口)、4789/udp(overlay 网络端口)端口。
manager:192.168.2.248
worker-1:192.168.2.249
worker-2:192.168.2.250
manager主机初始化管理节点
docker swarm init --advertise-addr 192.168.2.248
#将192.168.2.248初始化为管理节点
在worker-1 ,worker-2输入提示命令加入swarm集群
docker swarm join --token SWMTKN-1-4ub540qnlteq52z27tpzenupj539dgzmysn88hcmmynqux72lr-dlgvvd0ly92xpszv3tzv0u72e 192.168.2.248:2377
docker node ls
#查看集群的主机
manager主机创建服务
docker images
#查看自己的镜像
我使用昨天创建的WordPress镜像,启动服务
docker service create --replicas 10 --name wordpress -p 7000:80 wordpress
#使用wordpress为镜像,名为wordpress的服务,启动10个实例,将宿主机的7000端口映射到容器的80端口
docker service ls
#查看运行的服务
查看运行的容器实例
docker ps
#在各个主机分别运行该命令查看运行的容器实例
浏览器访问页面
增加容器实例
docker service update --replicas 15 wordpress
#实例增加到15个
docker service ls
查看每台主机运行的容器,可以看到每台主机有5个容器实例。当一台主机宕机,容器实例会转移到另外两台,实现初步的高可用,但是当主机状态恢复并没有重新分配。
删除服务
docker service rm wordpress
结束本项目