一、Docker Swarm简介
(1) Swarm 在 Docker 1.12 版本之前属于一个独立的项目,在 Docker 1.12 版本发布之后,该项目合并到了 Docker中,成为 Docker 的一个子命令。
(2) Swarm 是 Docker 社区提供的唯一一个原生支持 Docker 集群管理的工具。
(3) Swarm可以把多个 Docker 主机组成的系统转换为单一的虚拟 Docker 主机,使得容器可以组成跨主机的子网网络。
(4) Docker Swarm 是一个为 IT 运维团队提供集群和调度能力的编排工具。
(1) Docker Swarm 优点
a. 任何规模都有高性能表现
b. 灵活的容器调度
c. 服务的持续可用性
d. 和 Docker API 及整合支持的兼容性
e. Docker Swarm 为 Docker 化应用的核心功能(诸如多主机网络和存储卷管理)提供原生支持。
(2) docker swarm 相关概念
a. 节点分为管理 (manager) 节点和工作 (worker) 节点
b. 任务 (Task)是 Swarm 中的最小的调度单位,目前来说就是一个单一的容器。
c. 服务 (Services) 是指一组任务的集合,服务定义了任务的属性。
二、Docker Swarm实践
环境:
server5 (172.25.60.5) | manager |
---|---|
server4 (172.25.60.4) | worker |
server6 (172.25.60.6) | worker |
注: server4/5/6都安装docker,并打开。如果前面做过其他实验,要清缓存,保证干净的环境
1.创建 Swarm 集群
(1)初始化集群:
docker swarm init --advertise-addr 172.25.60.5
(2)根据提示在其他docker节点上执行命令:
(3)查看swarm集群节
docker node ls
(4) 部署swarm监控:(各节点提前导入dockersamples/visualizer镜像)
docker service create --name=viz --publish=8080:8080/tcp \
--constraint=node.role==manager \
--mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
dockersamples/visualizer
查看服务是否运行
docker service ls
docker service ps viz
2.创建集群服务
(1)docker service create (server4/5/6都有nginx镜像)
docker service create --replicas 3 --name web--publish 80:80 nginx:1.16
docker service create 命令创建一个服务
–name 服务名称命名为 my_cluster
–network 指定服务使用的网络模型(此处未用)
–replicas 设置启动的示例数为3
注:如果出现以下报错
查看镜像时:
解决办法:
清空刚才创建的缓存,关闭网络(刚才的问题是因为连网,创建时直接从网络上下载了镜像)
(2)弹性伸缩
docker service scale web=60 //拉神
docker service scale web=3 //压缩
(3)滚动更新
docker service update --image game2048 --update-delay 5s --update-parallelism 2 web
–image 指定要更新的镜像
–update-parallelism 指定最大同步更新的任务数
–update-delay 指定更新间隔
3.再介绍一种创建集群服务的方法
docker service create --name web --publish 80:80 --mode global game2048
–mode global:每个上面只能运行一个服务
优点: 新添加进去的worker会自动,只要有镜像会自动拉起服务,并加入监控
注:删除swarm集群
worker:
docker swarm leave
manager:
docker node rm server4
docker swarm leave -f
docker volume prune
docker network prune
dockerr container prune