Docker Swarm(十)Portainer 集群可视化管理
前言
搭建好我们的容器编排集群,那我们总不能日常的时候也在命令行进行操作,所以我们需要使用到一些可视化的工具,Docker图形化管理提供了很多工具,有Portainer、Docker UI、Shipyard等等,本文主要介绍Portainer。
Portainer是一个开源、轻量级Docker管理用户界面,基于Docker API,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、
Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。功能十分全面,基本能满足中小型单位对容器管理的全部需求。
单机运行
如果仅有一个docker宿主机,则可使用单机版运行,Portainer单机版运行十分简单,只需要一条语句即可启动容器,来管理该机器上的docker镜像、容器等数据。
下载镜像
docker pull portainer/portainer
创建数据卷
docker volume create portainer_data
运行容器
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
参数说明:
-d:容器在后台运行;
-p 9000:9000 :宿主机9000端口映射容器中的9000端口
-v /var/run/docker.sock:/var/run/docker.sock :把宿主机的Docker守护进程(Docker daemon)默认监听的Unix域套接字挂载到容器中;
-v portainer_data:/data :把宿主机portainer_data数据卷挂载到容器/data目录;
查看容器进程
docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
439cc8a6d44a portainer/portainer "/portainer" 13 seconds ago Up 13 seconds 0.0.0.0:9000->9000/tcp amazing_clarke
访问服务
访问方式:http://IP:9000 ,首次登录需要注册用户,给用户admin设置密码,如下图:

单机版本选择“Local",点击Connect即可连接到本地docker,如下图:

集群运行
更多的情况下,我们会有一个docker集群,可能有几台机器,也可能有几十台机器,因此,进行集群管理就十分重要了,Portainer也支持集群管理,Portainer可以和Swarm一起来进行集群管理操作。
在管理节点执行以下操作:
下载镜像
docker pull portainer/portainer
创建数据卷
docker volume create portainer_data
创建网络
docker network create --driver overlay --attachable portainer_agent_network
创建portainer代理
docker service create \
--name portainer_agent \
--network portainer_agent_network \
--mode global \
--constraint 'node.platform.os == linux' \
--mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \
--mount type=bind,src=//var/lib/docker/volumes,dst=/var/lib/docker/volumes \
portainer/agent
创建portainer服务
docker service create \
--name portainer \
--network portainer_agent_network \
--publish 9000:9000 \
--replicas=1 \
--constraint 'node.role==manager' \
--constraint node.hostname==manager-node \
--container-label com.docker.stack.namespace=portainer \
--mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \
--mount type=volume,src=portainer_data,dst=/data \
portainer/portainer \
-H unix:///var/run/docker.sock
参数说明:
-publish 9000:9000 :宿主机9000端口映射容器中的9000端口
-mount type=bind /var/run/docker.sock:/var/run/docker.sock :把宿主机的Docker守护进程(Docker daemon)默认监听的Unix域套接字挂载到容器中;
-mount type=volume portainer_data:/data :把宿主机portainer_data数据卷挂载到容器/data目录;
--constraint node.role==manager 指定容器运行在管理节点上.
--constraint node.hostname==manager-node 指定容器运行在管理节点manager-node上.
--container-label com.docker.stack.namespace=portainer 是为了prometheus+grafana能通过stack标签查看监控数据,建议今后不以stack方式部署的服务都加上com.docker.stack.namespace标签。
访问服务
访问方式:http://IP:9000 ,首次登录需要注册用户,给用户admin设置密码,如下图:

我们进入之后可以看到这个一个界面:

仪表盘和Swarm
仪表盘展示了Swarm集群的信息:

注意CPU 处为4、总内存为16.4 GB,集群内的每个节点有2个CPU且内存为8.2 GB,所以这些值为集群的总和。
点击 cluster vizualizer会进入Swarm页面, 这里有一个集群的视觉总览,唯一运行的服务是当前的Portainer:

点击名称列的cluster会进入一个服务的总览页面。可以看到,有很多服务相关的信息:

可以对服务进行实时的修改,包括位置约束、重启策略、添加服务标签等等。
找到 Resource limits and reservations 的位置,可以修改服务资源限制:

在页面的最底部是与服务关联的任务列表:

可以看到,我们有2个运行中的任务,2个节点上各有1个。点击左侧菜单中的Containers会显示一些你可能没预料到的信息:

只列出了1个容器,正常应该是有2个才对。为什么呢?
我们学习了docker container命令实际上仅在运行它们的节点上进行了应用,因为Portainer是在和manager进行对话,那是docker container命令所唯一进行运行的节点。记住Portainer只是Docker API的一个网页界面,因此它与命令行中运行 docker container ls的结果相同。
添加端点(endpoint)
但是我们可以将剩下的两个集群节点加到Portainer中。要进行添加,点击左侧菜单的Endpoint项。

然后点击+ Add endpoint按键,点击Home会带你进入本章这部分开头处所见到的Endpoint总览页面。从下面的截图中可以看到,worker节点分别运行了三个容器,并且它们 被标记为单机版而非 Swarm:

这时选择新的swarm cluster下左侧菜单中的的continers就会显示所有节点上的容器了:

添加私有仓库(registry)


扩展阅读
有关Portainer的更多信息参见:
- 官网:https://portainer.io/
- Portainter的GitHub地址:https://github.com/portainer/
- 最新文档:https://portainer.readthedocs.io/en/latest/index.html
- 模板文档:http://portainer.readthedocs.io/en/latest/templates.html
- Portainter Agent:https://portainer.readthedocs.io/en/stable/agent.html
Docker Swarm(十)Portainer 集群可视化管理的更多相关文章
- Docker Swarm java 服务集群
Docker Swarm java 服务集群 环境1: 系统:Linux Centos 7.4 x64 内核:Linux docker 3.10.0-693.2.2.el7.x86_64 Docker ...
- docker --swarm创建一个集群
如果搭建错误可以强制脱离集群网络: docker swarm leave --force 初始化集群网络管理节点: docker swarm init --advertise-addr 10.101. ...
- XNginx - nginx 集群可视化管理工具
之前团队的nginx管理,都是运维同学每次去修改配置文件,然后重启,非常不方便,一直想找一个可以方便管理nginx集群的工具,翻遍web,未寻到可用之物,于是自己设计开发了一个. 效果预览 集群gro ...
- docker swarm英文文档学习-7-在集群中管理节点
Manage nodes in a swarm在集群中管理节点 List nodes列举节点 为了查看集群中的节点列表,可以在管理节点中运行docker node ls: $ docker node ...
- 集群容器管理之swarm ---集群部署
集群部署及节点管理 使用swarm前提: Docker版本1.12+ 集群节点之间保证TCP 2377.TCP/UDP 7946和UDP 4789端口通信 节点规划: 操作系统:centos7.4.1 ...
- 庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群
庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群 一.简介 前面的两篇文章,我们已经介绍了Net Core项目基于Docker容器部署在Linux服 ...
- 宝塔面板 + Rancher + 阿里云镜像仓库 + Docker + Kubernetes,添加集群、部署 web 应用
目录 一,安装宝塔面板(V 6.8) 二,使用宝塔安装 Docker,配置阿里云容器服务 三,安装 Rancher (Server) 四,管理 Rancher.添加集群 五,添加 Rancher 应用 ...
- Docker 部署 RocketMQ Dledger 集群模式( 版本v4.7.0)
文章转载自:http://www.mydlq.club/article/97/ 系统环境: 系统版本:CentOS 7.8 RocketMQ 版本:4.7.0 Docker 版本:19.03.13 一 ...
- Docker 容器部署 Consul 集群
Docker 容器部署 Consul 集群 一.docker安装与启动1.1安装docker[root@localhost /]# yum -y install docker-io 1.2更改配置文件 ...
随机推荐
- BUAA_OS lab2 难点梳理
BUAA_OS lab2 难点梳理 实验重点 所列出的实验重点为笔者在进行lab2过程中认为需要深刻理解的部分. 进行内存访问的流程 熟悉mips内存映射布局,即理解mmu.h内图 二级页表的理解和实 ...
- [Skill]VBA零基础入门及实践:根据链接展示图片
简介 VBA(Visual Basic for Applications)是依附在应用程序(例如Excel)中的VB语言.只要你安装了Office Excel就自动默认安装了VBA,同样Word和Po ...
- Spring Security OAuth 格式化 token 输出
个性化token 背景 上一篇文章<Spring Security OAuth 个性化token(一)>有提到,oauth2.0 接口默认返回的报文格式如下: { "ac ...
- OpenPAL3:仙三开源版的第二个小目标 Accomplish!
去年的时候,OpenPAL3 的第一个版本发布 之后,我给 0.2 版本设定了一个小目标:让景天能跑出永安当.当时的第一个版本还只能算是概念验证的版本,没有音乐支持.输入支持,不能直接读取仙剑三的打包 ...
- HUAWEI AppGallery Connect 正式发布移动端App,随时随地掌握应用动态
华为应用市场AppGallery Connect应用一站式服务平台正式发布移动端App,帮助您随时随地查看应用信息,获取运营分析数据,接收重要消息通知,快速回复用户评论等,提升应用的运营管理效率,更便 ...
- 超详细!!Spring5框架开发笔记
Spring5开发教程 简介 spring特性 sping是轻量级的开源的JavaEE框架 Spring可以解决企业应用开发的复杂性 Sping两个核心的部分:IOC和AOC IOC:控制反转.把创建 ...
- 实时计算框架:Spark集群搭建与入门案例
一.Spark概述 1.Spark简介 Spark是专为大规模数据处理而设计的,基于内存快速通用,可扩展的集群计算引擎,实现了高效的DAG执行引擎,可以通过基于内存来高效处理数据流,运算速度相比于Ma ...
- 拓扑排序详解(梅开二度之dfs版按字典序输出拓扑路径+dfs版输出全部拓扑路径
什么是拓扑排序? 先穿袜子再穿鞋,先当孙子再当爷.这就是拓扑排序! 拓扑排序说白了其实不太算是一种排序算法,但又像是一种排序(我是不是说了个废话qwq) 他其实是一个有向无环图(DAG, Direct ...
- 记某次sql注入绕过ids
昨天测试sql注入,发现个站,存在ids,一个单引号直接拦截,无论我怎么编码都不行,怕不是废了.. 灵机一动 基础探测 /*'*/ 报错 /*''*/ 返回正常 是字符串类型. 先本地测试 返回所有 ...
- 【MySQL】若sql语句中order by指定了多个字段,则怎么排序?
举个例子吧:order by id desc,time desc先是按 id 降序排列 (优先)如果 id 字段 有些是一样的话 再按time 降序排列 (前提是满足id降序排列) order b ...