云原生之容器管理工具Portainer

2024-02-20 06:12

本文主要是介绍云原生之容器管理工具Portainer,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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.0volumes:- /var/run/docker.sock:/var/run/docker.sock- /var/lib/docker/volumes:/var/lib/docker/volumesnetworks:- agent_networkdeploy:mode: globalplacement:constraints: [node.platform.os == linux]portainer:image: portainer/portainer-ce:2.0.0command: -H tcp://tasks.agent:9001 --tlsskipverifyports:- "9000:9000"- "8000:8000"volumes:- portainer_data:/datanetworks:- agent_networkdeploy:mode: replicatedreplicas: 1placement:constraints: [node.role == manager]networks:agent_network:driver: overlayattachable: truevolumes: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接口供我们进行二次开发管理。

这篇关于云原生之容器管理工具Portainer的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/727278

相关文章

如何将Tomcat容器替换为Jetty容器

《如何将Tomcat容器替换为Jetty容器》:本文主要介绍如何将Tomcat容器替换为Jetty容器问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat容器替换为Jetty容器修改Maven依赖配置文件调整(可选)重新构建和运行总结Tomcat容器替

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque

C++常见容器获取头元素的方法大全

《C++常见容器获取头元素的方法大全》在C++编程中,容器是存储和管理数据集合的重要工具,不同的容器提供了不同的接口来访问和操作其中的元素,获取容器的头元素(即第一个元素)是常见的操作之一,本文将详细... 目录一、std::vector二、std::list三、std::deque四、std::forwa

Python容器类型之列表/字典/元组/集合方式

《Python容器类型之列表/字典/元组/集合方式》:本文主要介绍Python容器类型之列表/字典/元组/集合方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 列表(List) - 有序可变序列1.1 基本特性1.2 核心操作1.3 应用场景2. 字典(D

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

Spring核心思想之浅谈IoC容器与依赖倒置(DI)

《Spring核心思想之浅谈IoC容器与依赖倒置(DI)》文章介绍了Spring的IoC和DI机制,以及MyBatis的动态代理,通过注解和反射,Spring能够自动管理对象的创建和依赖注入,而MyB... 目录一、控制反转 IoC二、依赖倒置 DI1. 详细概念2. Spring 中 DI 的实现原理三、

k8s部署MongDB全过程

《k8s部署MongDB全过程》文章介绍了如何在Kubernetes集群中部署MongoDB,包括环境准备、创建Secret、创建服务和Deployment,并通过Robo3T工具测试连接... 目录一、环境准备1.1 环境说明1.2 创建 namespace1.3 创建mongdb账号/密码二、创建Sec

centos7基于keepalived+nginx部署k8s1.26.0高可用集群

《centos7基于keepalived+nginx部署k8s1.26.0高可用集群》Kubernetes是一个开源的容器编排平台,用于自动化地部署、扩展和管理容器化应用程序,在生产环境中,为了确保集... 目录一、初始化(所有节点都执行)二、安装containerd(所有节点都执行)三、安装docker-