云原生之容器管理工具Portainer

news2024/11/28 8:33:36

1. 简介        

        前面文章我们讲Docker、Docker Compose和Docker Swarm都是在Linux系统上手工命令行去操作,在第一次安装的时候可以命令行,以后运维和CICD流程操作中,如果还要命令行去各个节点操作,操作就麻烦了,工作效率就低了,我们需要有一个集中管理的系统,而且是web界面化的管理系统,而且是开源的,Portainer正是这样的系统。

        Portainer是一款开源的容器管理工具系统,旨在简化Docker容器和Kubernetes集群的管理。通过提供一个直观的Web界面,Portainer可以帮助用户轻松地创建、管理和维护容器,而无需使用复杂的命令行工具。

        Portainer系统开源代码托管在github上:https://github.com/portainer/portainer。

        Portainer提供两个版本:社区版和企业版。

        Portainer Community Edition is a lightweight service delivery platform for containerized applications that can be used to manage Docker, Swarm, Kubernetes and ACI environments. It is designed to be as simple to deploy as it is to use. The application allows you to manage all your orchestrator resources (containers, images, volumes, networks and more) through a ‘smart’ GUI and/or an extensive API.

        Portainer consists of a single container that can run on any cluster. It can be deployed as a Linux container or a Windows native container.

        Portainer Business Edition builds on the open-source base and includes a range of advanced features and functions (like RBAC and Support) that are specific to the needs of business users.

2. 架构

        Portainer由两个元素组成:Portainer服务器和Portainer代理。两者都作为轻量级容器在现有的容器化基础设施上运行,如Docker Swarm集群上运行。Portainer代理应该部署到集群中的每个节点,并配置为向Portainer Server容器报告。

        单个Portainer服务器将接受来自任意数量Portainer代理的连接,从而能够从一个集中式接口管理多个集群。为此,PortainerServer容器需要数据持久性。Portainer代理是无状态的,数据被运回Portainer服务器容器。

3. 安装

        这里单讲社区版的安装,Portainer社区版提供三种安装方式:Docker standalone、Docker Swarm、Kubernetes。官网文档:Install Portainer CE - Portainer Documentation。

        其实安装都及其简单,我的开发环境安装采用Docker Swarm方式,这里简述一下。我们采用docker-compose.yml来编排安装最方便了:

version: '3.2'

services:
  agent:
    image: portainer/agent:2.0.0
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/docker/volumes:/var/lib/docker/volumes
    networks:
      - agent_network
    deploy:
      mode: global
      placement:
        constraints: [node.platform.os == linux]

  portainer:
    image: portainer/portainer-ce:2.0.0
    command: -H tcp://tasks.agent:9001 --tlsskipverify
    ports:
      - "9000:9000"
      - "8000:8000"
    volumes:
      - portainer_data:/data
    networks:
      - agent_network
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints: [node.role == manager]

networks:
  agent_network:
    driver: overlay
    attachable: true

volumes:
  portainer_data:

        我的Docker版本是:

$ docker version
Client: Docker Engine - Community
 Version:           20.10.16
 API version:       1.41
 Go version:        go1.17.10
 

Server: Docker Engine - Community
 Engine:
  Version:          20.10.16
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.17.10
 containerd:
  Version:          1.6.4

        安装执行一行命令即可:

docker stack deploy -c docker-compose.yml portainer

        可以在docker swarm管理节点执行命令来查看,你将看到两个service:

docker service ls| grep portainer

4. Web管理        

        安装完毕之后,我们可以访问其Web管理系统地址,例如我的开发环境url地址是:http://192.168.1.10:9000/。

        从上图可以看到,Portainer可以对stack、service、container、image、volume、networks、config等进行界面化集中管理,这样大大简化了我们对Docker Swarm集群的运维工作。 

5. 实用工具

        虽然说运维管理要用Portainer Web管理系统来进行操作,但是CI/CD管道流水线的一切自动化操作,还是需要通过Linux命令行实用工具,可以编写Bash脚本或Python程序来自动化应用程序的安装部署。

        也有好人做了一个开源portainer-stack-utils:GitHub - greenled/portainer-stack-utils: CLI client for Portainer,安装直接看官网文档,这里不累述了。最后的工具是psu:

$ psu -h
A CLI client for Portainer

Usage:
  psu [command]

Available Commands:
  completion  Generate Bash completion scripts
  config      Manage configs
  container   Manage containers
  endpoint    Manage endpoints
  help        Help about any command
  login       Log in to a Portainer instance
  network     Manage networks
  proxy       Start an HTTP proxy to an endpoint's Docker API
  secret      Manage secrets
  service     Manage services
  setting     Manage settings
  stack       Manage stacks
  status      Check Portainer status
  volume      Manage volumes

Flags:
  -A, --auth-token string      Portainer auth token.
  -h, --help                   help for psu
  -i, --insecure               Skip Portainer SSL certificate verification.
      --log-format string      Log format. One of text or json. (default "text")
  -v, --log-level string       Log level. One of trace, debug, info, warning, error, fatal or panic. (default "info")
  -p, --password string        Portainer password.
      --settings-file string   Settings file. (default "$HOME/.psu.yaml)"
  -t, --timeout duration       Waiting time before aborting (like 100ms, 30s, 1h20m).
  -l, --url string             Portainer url.
  -u, --user string            Portainer user.
      --version                version for psu

Use "psu [command] --help" for more information about a command.        

        我在GitLab CICD里使用,通过gitlab-runner来调用psu进行服务部署。

6. API接口

         Portainer系统还提供了API接口,供我们进行二次开发管理,swagger地址:Build, Collaborate & Integrate APIs | SwaggerHub

         

7. 总结

         Portainer是一款开源的容器管理工具系统,通过提供一个直观的Web界面,帮助我们轻松地创建、管理和维护容器,同时也提供实用工具供我们自动化操作使用,还提供API接口供我们进行二次开发管理。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Rabbitmq入门与应用(四)-RabbitMQ常见模式

RabbitMQ常见Queue模式 简单模式 点对点模式,一个生产者一个消费者 生产者将消息发送到队列,消费者从队列中获取消息,队列是存储消息的缓冲区。 查看管理端效果 序列化解决方案 基于java序列化基于Json Bean public MessageConverter mess…

CPU是如何工作的?什么是冯·诺依曼架构和哈弗架构?

《嵌入式工程师自我修养/C语言》系列——CPU是如何工作的?什么是冯诺依曼架构和哈弗架构? 一、CPU内部结构及工作原理1.1 CPU的结构1.2 CPU工作流程举例 二、计算机体系结构2.1 冯诺依曼架构2.2 哈弗架构 三、总结 快速学习嵌入式开发其他基础知识&#…

塔罗星卜算大全系统源码带完整的安装代码包以及安装部署教程

塔罗星卜算大全系统源码是一款结合古老塔罗牌智慧与现代技术的占卜工具。它旨在为广大塔罗爱好者提供一个全面、便捷、高效的在线占卜平台。通过这款系统,用户可以轻松进行塔罗占卜,获取个性化的解读和建议。 以下是部分代码示例: 系统特色功…

【零基础学习CAPL】——CAN报文的发送(面板中直接修改信号值进行发送)

🙋‍♂️【零基础学习CAPL】系列💁‍♂️点击跳转 文章目录 1.概述2.面板创建3.系统变量创建4.系统变量与Panel值绑定4.CAPL实现5.效果6.全量脚本1.概述 在前面文章”【零基础学习CAPL】——CAN报文的发送(按下按钮同时周期性发送)“中对于发送报文中的信号是在脚本中固…

Spring Boot 笔记 027 添加文章分类

1.1.1 添加分类 <!-- 添加分类弹窗 --> <el-dialog v-model"dialogVisible" title"添加弹层" width"30%"><el-form :model"categoryModel" :rules"rules" label-width"100px" style"padding…

程序员金三银四跳槽指南:时间线经典面试16问

祝大家成功上岸&#xff0c;升职加薪&#xff0c;冲鸭 &#x1f389; 金三银四 今天复工&#xff0c;就要开始准备啦&#x1f4bc;✨ 把握好打工人跳槽的金三银四&#xff0c;获得满意的新工作 &#x1f389; 时间线 年后跳槽时间线&#xff0c;过完年刚好开始准备&#xf…

【Jvm】类加载机制(Class Loading Mechanism)原理及应用场景

文章目录 Jvm基本组成一.什么是JVM类的加载二.类的生命周期阶段1&#xff1a;加载阶段2&#xff1a;验证阶段3&#xff1a;准备阶段4&#xff1a;解析阶段5&#xff1a;初始化 三.类初始化时机四.类加载器1.引导类加载器&#xff08;Bootstrap Class Loader&#xff09;2.拓展类…

【Wio Terminal】输入/输出

输入/输出 一、概述1、硬件原理图Terminal引脚分布及功能Wio Terminal Grove端口引脚分配 二、使用Wio Terminal上的Grove模拟端口1、RPI 模拟引脚2、Grove引脚配置3、示例 三、使用 Wio Terminal上的Grove数字端口1、RPI 数字引脚2、Grove引脚配置将 Grove I2C 端口用作数字端…

mqtt 协议的概念和理解

一、概述 MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议&#xff09;&#xff0c;是一种基于发布/订阅&#xff08;publish/subscribe&#xff09;模式的”轻量级”通讯协议&#xff0c;该协议构建于TCP/IP协议上&#xff0c;由IBM在1…

前后端分离(delivery-management)部署文档

1. 前端项目:delivery-management 1.1. 前端项目打包 执行命令:npm run build 或者yarn run build,生成dist目录。 构建流程如下图: 1.2. 文件上传 将打包好的前端项目(dist目录),上传到服务器,并拷贝到nginx安装目录html目录下。 执行上传命令(sftp):put -r E:\…

WildCard:一个因太好用而被迫暂停服务的虚拟信用卡平台,魅力何在?

如果你需要使用Wildcard开通GPT4、Midjourney或是Only方式的话&#xff0c;请点击&#xff1a;WildCard使用教程 参考文章链接&#xff1a;WildCard&#xff1a;一个因太好用而被迫暂停服务的虚拟信用卡平台&#xff0c;魅力何在&#xff1f; 1、Wildcard用户数量激增&#x…

模拟电子技术——振荡器基本原理、RC桥式振荡器、矩形波发生电器

文章目录 前言一、振荡器什么是振荡器振荡器的基本电路结构振荡条件起振条件和稳幅原理 二、RC桥式振荡器什么是RC桥式振荡器RC串并联网络的选频特性振荡条件完整频率特性曲线举例 三、矩形波发生电器什么是矩形波发生电路稳态与暂态PWM脉宽调制矩形波发生电路基本组成 总结 前…

单线程传奇Redis,为何引入多线程?

大家都知道 Redis 的速度非常的快&#xff0c;这其中一个关键原因就是它采用了单线程模型&#xff0c;这也是它的一大独特之处。那么问题来了&#xff0c;既然单线程模型已经如此出色&#xff0c;为什么后续版本还要搞上多线程呢&#xff1f; 本文主要分析一下多线程在Redis中的…

【知识整理】PHP研发组代码规范要求

一、目标 统一代码风格、命名规范&#xff0c;增强代码可读性和可维护性&#xff0c;供日常开发工作中时参考&#xff0c;以提高团队协作的开发效率。 二、编程规约 PHP代码规范[PSR-12] 特别注意&#xff1a; 1、业务代码内对 常量、变量(分页值、版本号、向下参数等)、魔法值…

定制红酒:如何将客户的个性化需求融入红酒设计

云仓酒庄洒派深知每个客户都有自己的品味和偏好&#xff0c;因此&#xff0c;他们致力于将客户的个性化需求融入红酒设计中。以下是一些主要的方法和策略&#xff1a; 1. 深入了解客户需求&#xff1a;在开始设计之前&#xff0c;云仓酒庄洒派会与每位客户进行深入的沟通&#…

波奇学Linux:动静态库

创建静态库 Makefile文件 mymath.c文件 mymath.h文件 编译main.c文件 gcc 编译时会把在系统目录中寻找头文件和库文件&#xff0c;文件不在系统目录中用参数 -I 头文件所在文件夹/ -L 库的地址文件夹 -l除去lib和后缀。 拷贝文件到系统目录即可不用参数 库的安装类似于把头文件…

二叉搜索树——迭代实现

———————————————————— 普通的树形结构中数据是杂乱无章的&#xff0c;实际意义不大&#xff0c;要想更好的管理数据&#xff0c;需要让数据有序&#xff0c;二叉搜索树又称二叉排序树&#xff0c;是一种特殊的树形结构。 规定一般的二叉搜索树的左节点小于…

Kettle如何连接SQL Server和问题处理

简介 Kettle&#xff08;也称为 Pentaho Data Integration&#xff09;是一款开源的 ETL&#xff08;Extract, Transform, Load&#xff09;工具&#xff0c;由 Pentaho 开发。ETL 是指从一个数据源&#xff08;通常是数据库&#xff09;中提取数据&#xff0c;进行转换&#…

多元统计分析课程论文-聚类效果评价

数据集来源&#xff1a;Unsupervised Learning on Country Data (kaggle.com) 代码参考&#xff1a;Clustering: PCA| K-Means - DBSCAN - Hierarchical | | Kaggle 基于特征合成降维和主成分分析法降维的国家数据集聚类效果评价 目录 1.特征合成降维 2.PCA降维 3.K-Mean…

Redis哨兵模式的搭建

文章目录 1、原理2、准备2.1、服务器准备2.2、资源准备 3、Redis 主从搭建3.1、Redis 安装3.2、redis.conf 配置3.2.1、Redis 主配置3.2.2、Redis 从配置 3.3、Redis 启动3.4、Redis 状态3.4.1、master 节点信息3.4.2、slave节点信息 4、哨兵配置4.1、sentinel.conf配置4.2、re…