前言
时逢
白露
天骤变,细雨纷纷气渐凉,忽有故人心上过,回首山河已是秋。——碎碎念
当秋天
来临的那一刻,你会想起故人么?此刻,突然一句唐诗——“故人具鸡黍,邀我去田家”
,飘过了耳边…
何谓故人?比如孩童时的玩伴、小学时的挚友、中学时的死党、大学时的同窗…Ta们带给你的可能有欢乐、有忧伤、有启发、有志趣,更有一段又一段数不清道不尽的斑驳岁月。
在曾经的日子里,那些惊艳于平凡生活的时刻,注定会印在彼此的心间;而我们也会在时光之轮上,重新刻下新的心愿,与星辰结伴同行。
洗炼前尘往事,开始言归正传,话不多说,且听且看。有些盆友催更了,怎么还不更新玩转Docker
系列啊,根本没看够啊…
为了能够响应各位盆友的号召,今日博主大手一挥,呼之即来。博主的玩转Docker
系列,深耕Docker容器技术领域内重要的概念、原理、实践,从0到1带领任何一个人(即使是小白)读懂它,学会它,运用它。
那么,今天博主邀请各位认识一下Docker的可视化工具之一:Portainer
。
一. Portainer简介
1. 介绍
Portainer
是一款轻量级的容器化应用部署的管理平台,可用在Docker, Swarm, Kubernetes等不同的容器环境中。它通过一个智能化UI或者API,可以轻易的管理各种资源(包括containers, images, volumes, networks等)。
它以一个容器的形式,可运行在任何集群中,不限于Window或Linux。简单不简单?
2. 架构图
下面我们来看看Portainer
的架构图,掌握的核心交互:
一句话总结
:一个Portainer Server可与多个Portainer Agent连接,从而实现通过一个操作界面管理多个集群的目标。同时Portainer Server满足了数据持久化的需要,Portainer Agent会将数据(无状态)源源不断的发送到Portainer Server。
提示
:在同一个集群中,目前不支持运行Portainer Server容器的多个实例。Portainer建议在特定的manager节点上运行Portainer Server,并在其余节点上部署Portainer Agent。
二. Portainer入门
了解Portainer后,你是不是“蠢蠢欲动”
了?那博主满足你的心愿,咱们边走边聊。
1. 安装
首先需要安装一个Portainer。博主准备通过docker compose
运行一个Portainer容器。
1.1 准备Portainer yaml
准备一个名为:docker-compose.yaml
的文件,内容如下:
version: "3"
services:
# 定义一个服务
portainer:
# 指定镜像和版本
image: portainer/portainer:latest
# 指定容器名称
container_name: portainer
# 指定映射端口
ports:
- "9000:9000"
# 指定容器卷(数据目录)
volumes:
- /myapp/portainer/data:/data
- /var/run/docker.sock:/var/run/docker.sock
1.2 启动Portainer
将其上传至manger节点中的指定目录,比如:/usr/local/myapp
:
上传成功后,可通过执行:docker compose up --build
(如后台运行,可加-d
),启动portainer容器如下:
操作完成后,即可通过docker ps
,看看Portainer容器是否已运行:
2. 访问Portainer
安装完成后,我们可以通过浏览器打开Portainer管理界面了。但是不要着急,请先创建一个用户吧。
2.1 创建用户
Portainer默认提供一个admin用户(管理员),只需要设置一个密码如下所示:
2.2 登录
通过admin登录管理平台:
2.3 查看
登录成功,我们就可以使用Portainer了。默认提供本地容器(local)的呈现。
点击local,可以查看docker运行面板:
至此,你可以畅享Portainer
带给你的“轻松自在”
,再也不用牢记一堆docker command
了。
三. 管理Swarm集群
通过Portainer的管理菜单,我们得知Portainer
对容器编排及其资源均进行了统一管理,包括镜像、容器、卷、服务、网络等。那么,博主就以Swarm
为例,看看它是如何实现Docker的可视化运维和管理的。
1. 查看Swarm status
1.1 see集群节点
打开Swarm菜单,查看集群节点列表,相当于执行了一次docker node ls
:
也可以通过可视化页面,一览无余(当前集群无service
):
1.2 see节点详情
点击任一node,可查看当前节点的详情:
2. 发布Service
2.1 创建service
我们通过docker service create
,向集群发布一个nginx的服务后,点击Services,支持查看当前集群的服务列表:
点击服务名称,我们可以继续查看service的详情:
2.2 查看Container
如Service运行成功,我们还可以通过Container菜单,轻松一览当前docker主机的容器列表:
点击容器名称my_nginx容器后,可以看看它的详细情况:
你还可以通过点击页面下方的各种蓝色按钮,继续对容器完成各种操作,比如查看容器运行日志,进入容器、查看容器状态等。
3. Swarm节点更新
通过以上介绍,我想各位应该知道如何使用Portainer了吧。那么,接下来博主模拟一下swarm node宕机的情况。
3.1 see集群节点
这是当前Swarm集群节点的情况,默认是3副本3节点,因此每个节点运行了一个副本(nginx容器):
3.2 下线一个节点
此刻,博主选择docker-worker1
节点,将其状态更新为Drain
(不可用):
此时,我们可以看到docker-worker1
节点已变为Drain:
3.3 see集群服务
再次回到Swarm面板,我们发现docker-worker1
运行的task,已自动迁移到了docker-manger1
节点上了,丝滑不?
通过此例,我们不必再打开一个console或者shell去做各种command。你只需要在界面上,轻轻动动手指,即可完成集群的管理和运维,是不是很高效?
结语
为实现Docker的可视化运维,本文以精讲的方式对Portainer
进行大篇幅的介绍,相信你通过此文会收获很多!
走过的、路过的盆友们,点点赞,收收藏,并加以指导,以备不时之需哈~
系列回顾
微服务实战系列之玩转Docker(十三)
微服务实战系列之玩转Docker(十二)
微服务实战系列之玩转Docker(十一)
微服务实战系列之玩转Docker(十)
微服务实战系列之玩转Docker(九)
微服务实战系列之玩转Docker(八)
微服务实战系列之玩转Docker(七)
微服务实战系列之玩转Docker(六)
微服务实战系列之玩转Docker(五)
微服务实战系列之玩转Docker(四)
微服务实战系列之玩转Docker(三)
微服务实战系列之玩转Docker(二)
微服务实战系列之玩转Docker(一)
微服务实战系列之云原生