Docker 三剑客-------docker swam、visualizer监控、stack部署集群、Portainer可视化

文章目录

  • Docker 三剑客-------docker swam、visualizer监控、stack部署集群、Portainer可视化
  • 一、docker swarm
    • docker swarm简介
    • docker swarm部署
      • 1.管理节点上的初始化
      • 2.节点升降级
      • 3.镜像加载
      • 4.实现负载均衡
  • 二、visualizer监控
    • 1.将监控镜像导入本地仓库
    • 2.创建监控
  • 三、docker stack部署集群
    • 1.docker stack与docker-compose的区别:
    • 2.编辑yml脚本
    • 3.执行脚本,启动集群
    • 4.service回滚与更新
  • 四、Portainer可视化
    • 1.Portainer镜像的加载
    • 2.启动服务与测试

一、docker swarm

docker swarm简介

Swarm 是 Docker 公司研发的容器编排工具,用来管理 Docker 集群,它将一群 Docker 宿主机变成一个单一的,虚拟的主机。Swarm 使用标准的 Docker API接口作为其前端访问入口,换言之,各种形式的 Docker Client(docker client in go, docker_py,docker 等)均可以直接与 Swarm 通信

swarm集群:

swarm 集群构成 特性 负责任务
管理节点(manager) 整个集群的管理工作的负责节点 负责整个集群的管理工作包括集群配置、服务管理等所有跟集群有关的工作,包括docker client的命令反馈,节点与仓库的镜像拉取,Docker swarm API进行交互等等
工作节点(worker) swarm node 负责使用docker守护进程管理多个容器,负责运行相应的服务来执行任务(task)
Discovery 模块 Swarm发现Docker集群中的节点的模块。 discovery是Swarm中用于维护Docker集群状态的机制
Scheduler 模块 Swarm内部的调度模块 初始化后,swarm通过发现机制发现所有注册的Docker Node,并收集到所有Docker Node的状态以及具体信息,此后将用此来进行Docker管理请求的处理转发
Swarm API模块 监听服务模块,可以将该模块抽象为Swarm Server Swarm Server被初始化并完成监听之后,用户即可以通过Docker Client向Swarm发送Docker集群的管理请求

docker swam环境准备


主机域名(ip) MANAGER STATUS 配置
server2(172.25.6.2) manager(Leader/Reachable) 见博客haproxy仓库
server3(172.25.6.3) node1(worker1) 同server2
server4(172.25.6.4) mode2(worker2) 同server2
server1(172.25.6.1) 私人haproxy仓库 见博客haproxy仓库

结合haproxy仓库搭建(见博客),server1、server2配置与此博客相同,server3、server4的基本配置同server2

docker swarm部署

1.管理节点上的初始化

[root@server1 harbor]# docker swarm init ##生成加加入集群的指令,server1 为manager
To add a worker to this swarm, run the following command:docker swarm join --token SWMTKN-1-65nnbf8kw2rwlftk488a492m4xq95s2leew0taqcwxlu1mlhv2-bgrxrhlkfkc29rstr0q078ns1 172.25.6.1:2377 #以woork身份加入集群的命令,在其他需要加入集群的节点执行此命即可To add a manager to this swarm, run 'docker swarm join-token manager' andfollow the instructions.
#开启swarm集群,node1为管理节点,上面提示中给出了join woker的方式,如果要以manager身份加入集群,查看join-token,命令docker swarm join-token manager

server2,server3,server4节点加入集群,以worker身份

[root@server2 ~]]# docker swarm join --token SWMTKN-1-65nnbf8kw2rwlftk488a492m4xq95s2leew0taqcwxlu1mlhv2-bgrxrhlkfkc29rstr0q078ns1 172.25.6.1:2377[root@server3 ~]]# docker swarm join --token SWMTKN-1-65nnbf8kw2rwlftk488a492m4xq95s2leew0taqcwxlu1mlhv2-bgrxrhlkfkc29rstr0q078ns1 172.25.6.1:2377[root@server4 ~]]# docker swarm join --token SWMTKN-1-65nnbf8kw2rwlftk488a492m4xq95s2leew0taqcwxlu1mlhv2-bgrxrhlkfkc29rstr0q078ns1 172.25.6.1:2377
[root@server1 ~]# docker node ls   ##node节点查看

2.节点升降级

[root@server1 ~]# docker  node  promote server2  ##server的node节点提升为manager(leader),此时为Reachable(备胎)
Node server2 promoted to a manager in the swarm.

[root@server1 ~]# docker node demote server1 ##server1上的manager下台,此时server2的node节点正式为manager(leader)
Manager server1 demoted in the swarm.

[root@server2 ~]# docker node rm server1 -f  ##node节点强制(-f)删除,此时形成1个manager2个node的集群
server1

3.镜像加载

[root@server1 ~]# docker load -i myapp.tar  ##myapp.tar镜像可在使用docker pull 命令获取

[root@server1 ~]# docker  tag ikubernetes/myapp:v1 reg.westos.org/library/myapp:v1
[root@server1 ~]# docker push  reg.westos.org/library/myapp:v1  ##镜像上传

[root@server1 ~]# docker  tag ikubernetes/myapp:v2 reg.westos.org/library/myapp:v2
[root@server1 ~]# docker push  reg.westos.org/library/myapp:v2

4.实现负载均衡

[root@server2 ~]# docker service create --name webservice --publish 80:80 --replicas 3 myapp:v1 ##创建集群服务,名为webservice 端口映射80:80 开启三个副本 镜像为myapp:v1,
副本节点可以用:docker service scale webservice=6,进行扩充
[root@server1 ~]# curl 172.25.6.2/hostname.html  ##可看到三个副本节点

[root@server1 ~]# curl 172.25.6.3/hostname.html

[root@server1 ~]# curl 172.25.6.4/hostname.html

二、visualizer监控

1.将监控镜像导入本地仓库

[root@server1 ~]# docker load -i visualizer.tar  ##导入监控镜像

[root@server1 ~]# docker tag dockersamples/visualizer reg.westos.org/library/visualizer  ##标记镜像路径(默认)
[root@server1 ~]# docker push reg.westos.org/library/visualizer ##上传镜像

2.创建监控

创建名为viz,端口映射为8080,使用镜像为visualizer的监控

[root@server2 ~]#docker service create \
--name=viz \
--publish=8080:8080/tcp \
--constraint=node.role==managere \
--mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
visualizer

网页访问监控visualizer,输入:172.25.6.2:8080,或直接docker service ls

service回滚、更新在见docker stack部署集群部分

[root@server2 ~]# docker service ls

三、docker stack部署集群

基于 Docker Swarm 之上来完成应用的部署,面向大规模场景下的多服务部署和管理。

1.docker stack与docker-compose的区别:

  • Docker stack不支持“build”指令,它是需要镜像是预先已经构建好的, 所以docker-compose更适合于开发场景;
  • Docker Compose是一个Python项目,使用Docker API规范来操作容器。
  • Docker Stack功能包含在Docker引擎中,是swarm mode的一部分。
  • Docker stack不支持基于第2版写的docker-compose.yml ,也就是version版本至少为3。然而Docker Compose对版本为2和3的 文件仍然可以处理;
  • docker stack把docker compose的所有工作都做完了,因此docker stack将占主导地位。

2.编辑yml脚本

[root@server2 ~]# vim docker-compose.yml
version: "3.8"
services:web:image: myapp:v1ports:- "80:80"networks:- webnetdeploy:replicas: 10  ##副本节点数量update_config:parallelism: 2delay: 5srestart_policy:condition: on-failure
visualizer:image: visualizer:latestports:- "8080:8080"stop_grace_period: 1m30svolumes:- "/var/run/docker.sock:/var/run/docker.sock"deploy:placement:constraints:- "node.role==manager"networks:webnet:

3.执行脚本,启动集群

[root@server2 ~]# docker stack deploy -c docker-compose.yml mycluster ##yml脚本执行

[root@server2 ~]# docker service ls

[root@server2 ~]# docker  service scale mycluster_web=10  ##扩容节点数量,

注:可以直接更改yml脚本:replicas: 20(随意),在重启执行脚本直接进行扩容或缩荣
扩容:20

[root@server2 ~]# docker stack ps mycluster  ##命令行查看

4.service回滚与更新

[root@server2 ~]# docker service rollback mycluster_web ##回滚

[root@server2 ~]# docker service update --image myapp:v2 --update-parallelism 10 --update-delay 5s  mycluster_web ##更新,更改镜像为 myapp:v2


四、Portainer可视化

对于非运维人员来将采用命令行的方式建立了swarm集群并应用是非常具有学习成本的,所以进行swarm集群管理添加图形化管理界面的配置

1.Portainer镜像的加载

加载三部曲:导入、标记、上传

[root@server1 ~]# docker load -i portainer-agent.tar ##镜像的导入
[root@server1 ~]# docker load -i portainer.tar

[root@server1 ~]#  docker tag portainer/portainer:latest reg.westos.org/portainer/portainer:latest
##镜像标记:reg.westos.org/portainer(新建仓库路径)[root@server1 ~]#docker tag portainer/agent:latest reg.westos.org/portainer/agent:latest[root@server1 ~]# docker push reg.westos.org/portainer/portainer:latest ##镜像上传[root@server1 ~]# docker push reg.westos.org/portainer/agent:latest


2.启动服务与测试

[root@server2 ~]# docker stack deploy -c portainer-agent-stack.yml portainer ##portainer脚本执行,portainer-agent-stack.yml为官网下载,可直接应用
[root@server2 ~]# docker service ls ##服务查看
[root@server2 ~]#  docker stack ls  ##集群状态查看


网页访问图形管理界面,映射端口为9000 172.25.6.2:9000

设置两次密码,8位以上,否则报错

进入界面,完成

Docker 三剑客-------docker swam,visualizer监控、stack部署集群、Portainer可视化相关推荐

  1. Docker-三剑客之machine、compose、swam集群、visualizer监控、stack部署集群、Portainer可视化

    目录: 介绍 一.docker-machine 1.machine安装 2.使用docker-machine 二.Docker-compose 1.docker-compose配置 2.修改hapro ...

  2. docker 分布式管理群集_Coolpy7分布式物联网MQTT集群搭建

    Coolpy7分布式技术,支持多个Coolpy7 Core提供跨数据中心(多活)模式组建群集,支持群集零手动维护(基于Gossip分布式协议作为群集节点状态维护).Coolpy7从版本号V7.3.2. ...

  3. mysql8.0 利用docker容器安装配置多主多从集群

    mysql8.0 利用docker容器安装配置多主多从集群 原文:https://www.cnblogs.com/lkl6/p/14191419.html

  4. Kubernetes v1.13 二进制部署集群

    Kubernetes v1.13 二进制部署集群(HTTPS+RBAC) 官方提供的几种Kubernetes部署方式 minikube Minikube是一个工具,可以在本地快速运行一个单点的Kube ...

  5. Kubernetes学习之路(26)之kubeasz+ansible部署集群

    目录 1.环境说明 2.准备工作 3.分步骤安装 3.1.创建证书和安装准备 3.2.安装etcd集群 3.3.安装docker 3.4.安装master节点 3.5.安装node节点 3.6.部署集 ...

  6. 云服务器-异地部署集群服务-Kubernetes(K8S)-网络篇

    重要!!! 注意: 本文使用二进制安装,过程非常繁琐,所以不推荐大家使用这种安装方式.请使用更简洁的kubeadm安装,具体请参考 云服务器-异地部署集群服务-Kubernetes(K8S)-Kube ...

  7. Ceph实战(十一):重磅!!!一键部署集群的脚本

    您好,我是码农飞哥,本篇文章是Ceph实战专栏的第十一篇文章,前面的系列文章我们分别介绍了集群的部署,介绍了集群的组件,最后到介绍到Ceph的IO流程等等.这一篇文章是结束之作,我将介绍一下重点介绍快 ...

  8. swarm部署集群_WildFly Swarm –将Java EE应用程序部署为独立的Jar

    swarm部署集群 WildFly Swarm提供了一个简单的解决方案,用于将Java EE应用程序部署为独立的Jar文件. 这使得部署应用程序非常容易,尤其是REST或Web服务. Swarm在这方 ...

  9. SRS部署集群服务 Edge 模式[SRS V4.0]

    SRS 部署集群服务 Edge 模式 前言 Edge原理 下载并编译SRS 准备三台服务器,一台也可以,但是播放多了会有卡顿问题 配置SRS 测试SRS集群服务 前言 SRS是一个简单高效的实时视频服 ...

最新文章

  1. 图灵赠书——程序员12月书讯
  2. 皮一皮:这位家长,建议自己退群聊...
  3. numpy数组的索引和切片
  4. SpringBoot AOP完全讲解二:统一处理请求日志
  5. android闹钟——原代码【转】
  6. 三面美团Java岗,尚学堂java马士兵全套
  7. 详解linux下安装python3环境
  8. PHP mongodb运用,MongoDB在PHP下的应用学习笔记
  9. 字符串处理 —— 单模式匹配 —— MP 算法与 KMP 算法
  10. 中国AI军团争霸机器阅读理解大赛,搜狗创下全球新纪录
  11. htmlentities和htmlspecialchars 的区别
  12. w10 计算机配置管理模板,win10老是配置更新,设置这个,让你无处可更...
  13. python 中英文 分离_利用Python将文本中的中英文分离方法
  14. Vscode tab键使用
  15. 台式计算机电源线 规格,电脑电源线规格的介绍
  16. 洛谷 1144 最短路计数 bfs
  17. 用户权限影响瑞星安装
  18. el-input-number 失去焦点blur事件,
  19. WRF替换静态地理数据中的土地利用数据(WRF替换下垫面数据)
  20. Lawliet|Python学习笔记2——控制结构异常处理

热门文章

  1. 常用的计算机病毒检测方法都有哪些?
  2. grpc-gateway搭建
  3. HashMap概述与用法总结
  4. statistical thinking in Python EDA
  5. WebService:一些常用的webservice网址
  6. github/git问题之 LibreSSL SSL_connect: Operation timed out in connection to github.com:443
  7. 2011-07 《信息资源管理 02378》真卷解析,逐题解析+背诵技巧
  8. 仪器仪表的介绍及发展
  9. 大数据各岗位薪资多少?一张图告诉你答案
  10. python用户输入字符串串从小到大排序_python字符串从小到大排序