Docker 三剑客之Swarm
简介
一个swarm是有多个运行docker的主机构成的集群。每个独立的主机上可以使用docker的命令对容器进行管理,现在有了swarm,可以通过swarm管理器对所有的主机上的docker进行管理,包括主机上的所有容器。这里说的“主机”并不直接等同于独立的物理主机或者虚机,而是加入了swarm的节点。
概念
-
node 是加入到swarm集群中的一个docker引擎实体,可以在一台物理机上运行多个node,node分为manager nodes和worker nodes,manager node进行管理,但在默认情况下也会像worker node一样运行task
-
service 是运行在worker nodes上的task的描述,包括使用哪个docker 镜像,以及在使用该镜像的容器中执行什么命令
-
task 是service的实体
集群安装
安装前准备
-
要预装docker-compose工具
-
要预装docker-machine工具
-
所有节点进行时间同步
管理节点初始化
# docker swarm init --advertise-addr {IP}
# docker swarm init --advertise-addr 192.168.254.120
输出:
To add a worker to this swarm, run the following command:
docker swarm join .....
计算节点加入集群
# docker swarm join --token {token} {MANAGER_IP:port}
# docker swarm join --token {token} 192.168.254.120:2377
备注:
如果忘记token,执行如下命令:
docker swarm join-token worker
增加新的管理节点
在manager上执行如下命令,查看加入集群的命令
# docker swarm join-token manager
端口
- TCP 2377: swarm 管理节点的端口
- TCP和UDP 7946: 节点间通信
- UDP 4789: overlay 网络流量
常用命令
node常用类
- 查看集群节点
# docker node ls
- 最后一个管理节点删除
# docker swarm leave
- 删除管理节点(非最后一个管理节点)
# docker node demote
备注:降级为计算节点
# docker node rm
备注:删除节点
- 查看节点详情
# docker node inspect
- 节点降级
# docker node demote #节点降级,由管理节点降级为工作节点
-
节点升级 docker node promote #节点升级,由工作节点升级为管理节点
-
更新节点状态
$ docker node update --availability drain worker1
备注:
更新节点worker1 不可用,这时worker1不再接受来自manager的任务
$ docker node update --availability active worker1
备注:
更新节点worker1 可用
- 查看节点中运行的任务
# docker node ps #查看节点中的 Task 任务
服务管理类
- 服务创建
# docker service create
- 服务删除
# docker service rm
- 服务扩容或缩容
# docker service scale
- 查看所有服务列表
# docker service ls
- 查看服务详情
# docker service inspect --pretty helloworld
- 查看服务日志
# docker service logs
- 更新某个服务
# docker service update