Swarm 在Docker1.12版本之前属于一个独立的项目,在Docker1.12版本发布之后,该项目合并到了Docker中,成为Docker的一个子命令。Swarm是Docker 社区提供的唯一一个原生支持Docker集群管理的工具。Swarm可以把多个Docker 主机组成的系统转换为单一的虚拟 Docker主机,使得容器可以组成跨主机的子网网络。Docker Swarm 是一个为IT运维团队提供集群和调度能力的编排工具。
swarm的管理体系
·Docker Swarm 优点
·任何规模都有高性能表现
·灵活的容器调度
·服务的持续可用性
·和DockerAPI及整合支持的兼容性
·Docker Swarm为Docker化应用的核心功能(诸如多主机网络和存储卷管理)提供原生支持。
做swarm初始化
docker swarm init
docker notes ls
一个master,两个worker
然后在server2和server3中分别启动docker
systemctl daemon-reload
systemctl restart docker
同时保证他们能上网
·docker swarm 相关概念
·节点分为管理(manager)节点和工作(worker)节点
·任务(Task)是Swarm中的最小的调度单位,目前来说就是一个单一的容器。
·服务(Services)是指一组任务的集合,服务定义了任务的属性。
docker network create -d overlay mynet
我们创建一个服务
docker service create --name my_cluster --network mynet --replicas 3 -p 80:80 ikubernetes/myapp:v1
如果myapp镜像没有的话会从外网下载
docker ps my_cluster,查看容器在三个节点的运行状态
然后我们部署一个监控
先拉取资源
docker pull dockersamples/visualizer
然后我们再创建一个服务
然后我们打开浏览器去查看
这三个节点均能实现负载均衡
如果节点不够用我们可以做拉伸
docker service scale my_cluster=6
6个节点也可以做缩减(弹性压缩)
docker service scale my_cluster=3
滚动更新--然后我们可以批量的进行更新容器
一次更新3个间隔五秒
这样刚才的v1都别更新为v2了
编辑我们docker compose文件
然后我们读取compose文件
docker stack deploy -c docker-compose.yml my_cluster
查看部署
修改conpose文件
给节点设置内存和cpu,保证一个资源限制
然后我们节点需要的镜像都上传到harbor仓库中
ikubernetes/myapp:v1、ikubernetes/myapp:v2均长传到仓库中,然后删除本地的镜像
然后修改我们的私有仓库vim daemon.json(server1\2\3)
{
"registry-mirrors":["https://reg.westos.org"]
}
然后
systemctl daemon-reload
systemctl reatart docker
也要保证解析是正确的(/etc/hosts)
然后拉取尝试、
发现连接成功
修改名字myapp:
image: myapp:v1
修改端口ports:
"8000:80"
然后我们部署创建
还可以创建滚动更新(vim compose.yml)
myapp:
image:myapp:v2
部署一下
查看更新
然后去访问查看一下8000端口
我们也可以通过portainer
进行图形可视化的监控
然后我们在harbor上创建一个portainer的项目
docker tag portainer/portainer:latest reg.westos.org/portainer/portainer:latest放到我们的私有仓库中
docker push reg.westos.org/portainer/portainer:latest然后上传
然后我们部署
docker stack deploy -c portainer-agent-stack.yml portainer
然后我们访问9000端口强制修改密码登录
这样就可以查看我们的集群监控
也可以直接在上述界面部署服务
我们先删除我们的my_cluster
然后设置register
然后在服务栏
添加名字,端口网络等信息
直接create
也可以进行拉伸直接修改后面的数字即可