Portainer堪称最优秀的容器化管理平台

一、Portainer是什么?

Portainer是一款开源的容器管理平台,支持多种容器技术,如Docker、Kubernetes和Swarm等。它提供了一个易于使用的Web UI界面,可用于管理和监控容器和集群。Portainer旨在使容器管理更加简单和可视化,并且它适用于各种规模的容器环境,从个人计算机到企业级部署,而且能够一次性管理多种类型的多个集群。

Portainer主张让容器管理变得更加简单,所以它的界面更加人性化,操作不复杂,即便非专业性非常强的人员,也能够很快掌握基本的管理能力。
在这里插入图片描述

Portainer分为企业版Portainer Business Edition和社区版Portainer Community EditionPortainer Business Edition建立在开源版本的基础上,包括一系列专门针对业务用户需求的高级特性和功能(如 RBAC等)。

社区版本的功能已经非常强大了,满足一般的集群管理完全没有问题,本文的安装和演示都基于社区版本来。

二、portainer功能介绍

Portainer提供了丰富的功能,包括但不限于:

  1. 集群管理:支持kubernetes、docker swarm等各类集群,能够非常清楚展示各集群的节点、服务等情况,支持多类集群,集群信息可视化。
  2. 容器管理:通过Portainer可以轻松地创建、删除、启动、停止和重启容器,还可以查看容器的日志和详细信息。
  3. 镜像管理:Portainer提供了镜像管理功能,可以管理本地和远程仓库中的镜像,还可以拉取、推送和删除镜像。
  4. 仓库管理:Portainer支持Docker Hub、Docker Registry和Harbor等多个仓库,并提供了仓库管理功能。
  5. 用户和团队管理:Portainer支持创建用户和团队,并分配不同的权限和角色。
  6. 仪表盘和监控:Portainer提供了仪表盘和监控功能,可以轻松地查看容器运行状态、资源使用情况、日志等信息。
  7. 插件和扩展:Portainer支持插件和扩展,可以通过它们扩展和定制Portainer的功能,例如,Portainer提供了Kubernetes插件,可以将Portainer与Kubernetes集成,从而管理Kubernetes集群。
  8. 存储管理:支持存储卷的查询、增加和删除,非常方便。
  9. 安全支持:Portainer提供了许多安全性特性,例如基于角色的访问控制、多租户支持、LDAP集成等,使得用户可以安全地管理和监控容器和集群。

三、portainer核心设计

Portainer集群由两个部分组成:Portainer Server 和 Portainer Agent。两者都可以在现有的容器化基础设施上作为轻量级容器运行。

Portainer Agent部署在集群中的每个节点,并配置为向 Portainer Server报告数据,单个 Portainer Server将接受来自任意数量的 Portainer Agent的连接,从而提供从一个集中式界面管理多个集群的能力。为此,Portainer Server 容器需要数据持久性,其默认使用sqllite数据,也支持自定义其他类型的数据库。

Portainer Agent是一个非常重要的组件,它负责与Docker引擎、kubelet通信,并收集和传递容器和镜像等信息,从而实现了Portainer对Docker和kubernetes的管理和监控。

Portainer Server内置了Portainer API和Portainer UI。Portainer API作为核心的业务逻辑处理单元,为用户提供了RESTful API接口,实现了用户权限管理、容器编排、镜像管理、网络管理等功能。Portainer UI则提供了Web界面,方便用户通过浏览器访问和管理Portainer服务。

通过部署多个Portainer Server可以实现Portainer Server集群的高可用。Portainer Agent可以配置连接多个Portainer Server,通过--host指定多个Portainer Server,在这种情况下,Portainer Agent会将数据同时同步到多个Portainer Server,数据发送之前会进行去重,Server端也会根据数据ID进行去重处理。

version: '3'
services:
  agent:
    image: portainer/agent
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    command: --host=hostname_or_ip --port=9000 --no-tls

多个Portainer Server可以配置使用同一个数据库,在配置文件中指定数据库的类型、地址、端口、数据库名称、用户名和密码等参数即可,以下是Docker Compose配置文件示例:

version: '3'

services:
  portainer:
    image: portainer/portainer-ce
    environment:
      - "DB_TYPE=mysql"
      - "DB_HOST=your_database_host"
      - "DB_PORT=3306"
      - "DB_NAME=your_database_name"
      - "DB_USERNAME=your_database_username"
      - "DB_PASSWORD=your_database_password"

总的来说,portainer的核心设计使得集群的架构和部署都比较简单。

四、portainer安装和部署

portainer的安装非常简单,可以直接通过docker容器快速部署,支持在Linux或Windows服务器上本地安装,如下:

  1. 在Docker容器中安装Portainer:

    $ docker volume create portainer_data
    $ docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
    
  2. 本地安装Portainer:

    在Linux或Windows服务器上下载适用于您的系统的二进制文件,并运行以下命令:

    $ ./portainer
    

portainer还支持docker stack的形式安装,笔者的安装就采用了这种方式:

  1. 下载portainer-agent-stack.yml配置文件

    [docker@node1 ~]$ curl -L https://downloads.portainer.io/ce2-17/portainer-agent-stack.yml -o portainer-agent-stack.yml
    
  2. 使用docker stack安装portainer

    [docker@node1 ~]$ docker stack deploy -c portainer-agent-stack.yml portainer
    Creating network portainer_agent_network
    Creating service portainer_agent
    Creating service portainer_portainer
    
  3. 查询portainer容器

    安装完成以后,使用docker ps应该能查看到portainer容器,类似如下图

    启动以后开放了9443作为web端口访问,在浏览器中输入http://{IP}:9443即可访问portainer页面,在未设置密码之前,首先会进入密码设置页

    创建账号密码登录以后,进入首页,会显示所有的环境Environments,如下图,我本地安装了一个docker swarm,一个manager节点和一个worker节点。

五、portainer的使用介绍

下面一起来体验一下portainer的主要功能:包括Dashboard仪表板、容器管理、镜像管理、Service管理、Volumes管理、用户和团队管理。这里以docker集群的管理为例,如果你连接的是kubernetes集群,那么会有kubernetes集群的相关功能。

5.1、Dashboard仪表板

清晰简洁地展示集群地相关信息,以及集群内关键资源的分布情况,如Stack、Service、Container、Image、Volume、Network、GPU等。

能让你快速对所管理的集群有一个概况的掌握。

5.2、Swarm集群管理

有专门针对Swarm集群的面板,笔者本地就是搭建了一个简单的2个节点的swarm集群(一个manager和一个worker),如下图可以看到清楚列出了swarm集群节点、cpu、内存等相关信息,节点的类型、IP地址、运行状态等也展示了出来。

初次之外,通过"cluster visualizer"还可以以可视化的形式进行展示:

5.3、容器管理

以容器的维度列出所管理集群下所有的容器,支持容器的创建、查询、启动、停止、删除等,所有容器的IP、状态、对应的镜像等信息也在这里展示,非常方便。

在容器的详细信息页面中,可以查看容器的日志,包括标准输出和标准错误输出。

5.3、镜像管理

列出了本地所有的镜像,支持从远程仓库如DockerHub拉取镜像到本地,还支持镜像导入、查询、删除,甚至是在线构建新的镜像。

5.4、Service管理

支持在线可视化进行Service创建,支持端口映射配置、replicated和global不同模式配置,比起命令行来说简单方便了不少。

还可以实时查看service列表,查询和删除对应的service。

5.5、Volumes管理

portainer支持数据卷的管理,卷的详情查看、挂载的容器、权限控制,支持卷的新建、查询和删除。

5.6、用户和团队管理

在Portainer的主界面中,选择“设置”,然后选择“用户管理”或“团队管理”,可以创建和管理用户和团队,并为他们分配不同的权限和角色,其中角色权限控制是属于企业版本才有的功能。

总的来说,Portainer是一个功能强大的容器管理平台,通过它可以轻松地管理和监控容器集群,特别是它的部署和管理比较简单,不像很多其他的平台,本身复杂,在解决问题的情况下又引入了新的问题。无论是个人用户还是企业用户,Portainer都是一个不错的选择,特别如果是docker swarm集群配合portainer,对于中小企业来说堪称利器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/3155.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WinForm | C# 界面弹出消息通知栏 (仿Win10系统通知栏)

ApeForms 弹出消息通知栏功能 文章目录ApeForms 弹出消息通知栏功能前言全局API通知栏起始方向通知排列方向通知栏之间的间隔距离无鼠标悬停时的不透明度消息通知窗体的默认大小示例代码文本消息提示栏文本消息提示栏(带选项)图文消息提示栏图文消息提示…

【Spring-boot源码剥析】| 启动原理之侠客行篇

目录一. 传说篇二. 快速启动原理三. 自动配置原理3.1 准备阶段3.2 配置阶段3.3 运行阶段三. Pefect Ending一. 传说篇 江湖传说,有一个神秘的江湖大侠,他名叫SpringBoot,擅长于开发出快速启动的应用程序。这个侠客的江湖名号传遍了整个江湖&a…

did not find expected key while parsing a block mapping at line 2 column 1的解决方法

问题描述 真的是困扰了好久的一个问题&#xff0c;真的是邪乎了&#xff0c;报的错误实际上是错的 完整报错&#xff1a; Error: YAML Exception reading /path_to_your_blog/_publications/2020-08-21.md: (<unknown>): did not find expected key while parsing a b…

JQuery

概述&#xff1a; JQuery&#xff1a;JavaScript和查询&#xff0c;他是辅助JavaScript开发的js类库。 他的的核心思想就是write less&#xff0c;do moire 实现了很多浏览器兼容问题 JQuery的核心函数 $(参数) 1 参数是函数&#xff1a;$(function(){}) window.onlooad fun…

AI风暴 :文心一言 VS GPT-4

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; 文心一言 VS GPT-4 文心一言&#xff1a;知识增强大语言模型百度全新一代知识增强大语言模型&#xff0c;文心大模型家族的新成员&#xff0c;能够与人对话互动&#…

TryHackMe-Zeno(boot2root)

Zeno 你有和伟大的斯多葛派哲学家芝诺一样的耐心吗&#xff1f;试试吧&#xff01; 端口扫描 循例 nmap Web枚举 进到12340端口 目录扫描 /rms是一个业务站点 在admin登录页面尝试弱口令和注入&#xff0c;也都没有成功 SQLI 在点餐这发现了个get参数id&#xff0c;尝试sql…

八大排序算法之归并排序(递归实现+非递归实现)

目录 一.归并排序的基本思想 归并排序算法思想(排升序为例) 二.两个有序子序列(同一个数组中)的归并(排升序) 两个有序序列归并操作代码: 三.归并排序的递归实现 递归归并排序的实现:(后序遍历递归) 递归函数抽象分析: 四.非递归归并排序的实现 1.非递归归并排序算法…

如何从 Vue CLI 迁移到 Vite

如何从 Vue CLI 迁移到 Vite 十一月11 2021如果你在 2021 年之前一直在使用 Vue 进行开发&#xff0c;那么你选择的构建工具很有可能是 Vue CLI。一段时间以来&#xff0c;它一直是脚手架 Vue.js 项目的事实标准。不过现在&#xff0c;Evan You的下一代构建工具Vite已经引起了很…

精选7个 Python 学习资源库,助你成为优秀的开发者

当你在学习编程时&#xff0c;很容易被大量的资源所吓到&#xff0c;不知道该从何开始。 GitHub 仓库是一个很好的起点&#xff0c;因为它们提供了一种非常实用的方式来了解实际的编程应用。你可以查看其他人的代码&#xff0c;并将其与自己的代码进行比较和学习。 当涉及到 …

kubernetes(k8s)为容器和 Pod 分配内存资源

kubernetes(k8s)为容器和 Pod 分配内存资源 展示如何将内存请求&#xff08;request&#xff09;和内存限制&#xff08;limit&#xff09;分配给一个容器。 我们保障容器拥有它请求数量的内存&#xff0c;但不允许使用超过限制数量的内存。 创建新的命名空间 kubectl creat…

【数据结构】顺序栈的C语言实现

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;数据结构 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录栈1. 栈的概念1.1 栈…

Java打开CSV文件到JTable展示

概述主要知识点SwingNode类 &#xff1a;把Java swing组件封装成一个JavaFX的Node&#xff0c;使得Java Swing可以和JavaFX嵌套在一起使用&#xff0c;JavaSwing贼丑&#xff0c;但操作简单&#xff0c;JavaFX的表格组件&#xff08;TableView等&#xff09;有点复杂&#xff0…

DevOps流水线搭建-PHP版本

一、介绍流水线发布代码1、官网https://www.jenkins.io/zh2、kubesphere里的介绍https://kubesphere.io/zh/docs/v3.3/devops-user-guide/how-to-use/pipelines/choose-jenkins-agent/3、git仓库可以自己写点测试代码&#xff0c;提交&#xff0c;待会测试用https://gitee.com/…

Mybatis(四):自定义映射resultMap

自定义映射resultMap前言一、处理字段和属性的映射关系问题&#xff1a;方案一&#xff1a;使用别名方案二&#xff1a;在mybatis-config.xml中设置mapUnderscoreToCamelCase方案三&#xff1a;在映射文件中设置redultMap二、多对一映射处理问题&#xff1a;方案一&#xff1a;…

如何在 Vue 中使用 防抖 和 节流

大厂面试题分享 面试题库前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★地址&#xff1a;前端面试题库 https://mp.weixin.qq.com/s?__bizMzU5NzA0NzQyNg&mid2247485824&idx3&sn70cd26a7c0c683de64802f6cb9835003&scene21#wech…

内存操作函数

前言 &#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&#x1f32f; c语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f349;本篇简介:>:介绍c语言中有关指针更深层的知识. 金句分享: ✨未来…

蓝桥杯Web前端练习-----渐变色背景生成器

介绍 相信做过前端开发的小伙伴们对渐变色在 UI 设计中的流行度一定不陌生&#xff0c;网页上也时常可以看到各类复杂的渐变色生成工具。使用原生的 CSS 变量加一些 JS 函数就能做出一个简单的渐变色背景生成器。 现在渐变色生成器只完成了颜色选取的功能&#xff0c;需要大家…

【你不知道的 CSS】你写的 CSS 太过冗余,以至于我对它下手了

:is() 你是否曾经写过下方这样冗余的CSS选择器: .active a, .active button, .active label {color: steelblue; }其实上面这段代码可以这样写&#xff1a; .active :is(a, button, label) {color: steelblue; }看~是不是简洁了很多&#xff01; 是的&#xff0c;你可以使用…

5种最佳像素化图像的方法

5种最佳像素化图像的方法1. 什么是像素化&#xff1f;2. 像素化有什么用&#xff1f;3. 如何像素化图像&#xff1f;参考Pixelate 像素化 这篇博客将讨论像素化及如何以五种最佳方式对图像进行像素化。有时希望在在线共享照片时保护照片的隐私。因此在共享图像之前会对图像的某…

锂电池充电的同时也能放电吗?

大家应该都有这样经历&#xff0c;我们的手机在充电的同时也能边使用&#xff0c;有的同学就会说了&#xff0c;这是因为手机电池在充电的同时也在放电。如果这样想我们可能就把锂电池类比了一个蓄水池&#xff0c;以为它在进水的同时也能出水&#xff0c;其实这个比喻是错误的…