Docker可视化管理工具Portainer

Portainer简介

Portainer 是一个轻量级的、开源的容器管理工具,提供了一个直观的 Web 用户界面(UI),用于管理 Docker 和 Kubernetes 环境。它简化了容器的部署、监控和管理,特别适合不熟悉命令行操作的用户或团队。

Portainer架构概述

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

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

其它请参见官方文档:Welcome | Portainer Documentation

Portainer安装

环境依赖

由于本地已具备Docker服务运行环境,因此基于docker环境安装Portaniner镜像服务,并运行容器,相关Docker安装过程此处省略,可参见《Docker基础安装与使用》

拉取镜像文件

拉取Docker中央仓库最新版本镜像;

docker pull portainer/portainer-ce:latest

注意:portainer-ce为开源社区版,同时官方还有商业版portainer-be,拉取时需要区分;

执行日志

[root@centos72 docker]# docker pull portainer/portainer-ce:latest
latest: Pulling from portainer/portainer-ce
dc8df0f2921e: Pull complete 
c82aa9c9fb45: Pull complete 
d40df14c1d7a: Pull complete 
a3939f2dc487: Pull complete 
204b2fbb824e: Pull complete 
a53c840f28bf: Pull complete 
9e1dadc4be73: Pull complete 
6f01ec19fa2b: Pull complete 
e2f767fe3885: Pull complete 
793e77bf062e: Pull complete 
4f4fb700ef54: Pull complete 
Digest: sha256:bd12f7a8732kx8e2a512e18272c3lwifjsf5sdf2d663451894axv557a3b9uiw6
Status: Downloaded newer image for portainer/portainer-ce:latest
docker.io/portainer/portainer-ce:latest

令查看images镜像列表是否已存在,以及查看版本与大小;

docker images

创建Docker服务

下载镜像后,可以直接通过docker run创建并默认运行portainer服务容器;

docker run -d --name=portainer -p 9000:9000 portainer/portainer-ce:latest

但默认安装存在弊端,并没有对portainer的docker容器环境做硬件资源分配限制,因此可能会占用所在主机过多资源以及与其它应用程序竞争;

如果已安装启动portainer容器,先停止portainer的docker容器,通过外部命令行运行容器,限制容器内存、CPU资源使用数量;

相关命令参数可通过:docker run --help 查看或查看官方文档:Resource constraints | Docker Docs

# 创建并启动指定docker容器,后缀b、k、 m、g表示内存容量单位
docker run -d --name=portainer \-c 2 -m 512m --memory-swap=1G \-p 9090:9000 \-v /var/run/docker.sock:/var/run/docker.sock \-v /opt/docker/sysdata/portainer_data:/data \-e APP_ENV="production" \--restart unless-stopped \portainer/portainer-ce:latest

参数解说:

run:表示从镜像中创建一个新的docker容器并启动运行;

-d:表示容器在后台启动

--name:表示为docker容器设置一个名称

-m或--memory:表示容器可使用最大内存;

--memory-swap:表示容器可缓存到磁盘上的交换内存使用量和-m内存可使用量的总和,设置为0则忽略,-1则无限制,如果与-m数量一致,则无法使用磁盘缓存内存空间;

-c或--cpus:表示容器可使用的CPU资源量,通常按核心数量算,也支持,0.5,1.5~等使用量计算;

-p:表示宿主机与docker容器的端口映射,多个端口可以用多个-p来实现;

-v:表示宿主机与docker容器的文件目录映射,多个目录映射可用多个-v来实现;注意:需要是有效的宿主机卷目录;

-e:表示在docker容器中添加环境变量

--restart:表示docker容器的重启策略为:no:默认不自动重启;always:总是重启容器;on-failure:仅在容器退出状态码非 0 时重启;unless-stopped:总是重启,除非容器被手动停止;

portainer/portainer-ce:latest:表示服务镜像名称,可通过docker images查看

当控制台没有输出错误,并返回显示正常的dockerId串后,表示启动成功,

访问docker服务器的9000端口(注意事向:因我的环境上9000端口已被占用实际用的9090,因此创建docker容器时,用的-p 9090:9000参数

管理与使用

浏览器输入:http://ip:9000,即可进入Portainer初始化界面,它会要求我们配置用户名密码:

完成账户密码初始化之后,默认无任何管理服务;

Docker主机管理

可点击Home页上Infomation提示中的的"environment wizard“进行服务器本地容器管理,或从左侧菜单Environments》Add environment进入添加;

跳到QuickSetup页,选择第一项,Docker Standalone,因为本地测试的docker容器为单机独立部署;点击Start Wizard进入下一步;

选择通过在Docker服务器上安装Agent程序来支持远程管理;

选中Agent块,点击"Copy command"按钮,复掉脚本到远程Docker服务所在主机上执行,自动下载并安装Agent代理;

注意:此处是指需要在安装Docker引擎服务的主机上运行此Agent代理脚本;

docker run -d \-p 9001:9001 \--name portainer_agent \--restart=always \-v /var/run/docker.sock:/var/run/docker.sock \-v /var/lib/docker/volumes:/var/lib/docker/volumes \portainer/agent:2.16.2

复制脚本在远程docker服务器上安装Portainer Agent程序;

待执行完毕,点击Connect按钮链接即可在右上角看到连接配置;

回到主页面,可以查看已成功连接的远程docker服务。

安装镜像演示

通过安装Tomcat来演示,在Portainer上如何操作,点击Images,进入镜像Pull页面;输入tomcat,点击Search跳入到官方仓库平台,查找是否存在或支持的版本;

点击搜索列表中的tomcat,进入tomcat版本镜像明细页面,切换到Tags选项卡内容中,因为在Overview中主要是提供基于Dockerfile安装的版本(其实也包含tags版本,需要注意区分);

点击Tags标签,官方已打包好多个可用的Tags镜像版本;

选择一个最新的版本,用来安装镜像与测试;Copy: docker pull tomcat:9.0.98-jdk8-corretto-al2,复制tomcat:9.0.98-jdk8-corretto-al2内容到Portainer中docker.io框,点击”Pull the image“拉取;

因拉取中央仓库镜像,拉取速度受网络环境影响比较大,等待一会儿,待拉取完毕后,在Images中显示;

在Containers页中,通过 Add container 添加创建容器;Name任意命名,Image为并填项,输入已拉取的tomcat镜像版本:tomcat:9.0.98-jdk8-corretto-al2,因为我们已拉取tomcat镜像到docker服务器下,因此将”Always pull the image“关闭,默认会查找本地已有的镜像对应版本;

点击publish a new network prot 添加docker容器环境与 docker服务器主机环境(宿主机)关联的端口映射,(宿主机)host:8080,(容器) container:8080,当通过浏览器访问宿主机物理端口8080时,将会映射到docker容器系统下的8080端口;

点击Deploy the container 部署应用后,回到Containers列表,docker容器tomcat服务已成功运行;

在Docker服务主机上检索8080端口,显示已启用;

通过浏览器访问,显示404,但这页面风格明显tomcat服务返回的;

通过外部命令行,进入容器内查看,发现在/usr/local/tomcat/webapps下没有任何应用运行,因此返回404;

如果开发使用,只需将/usr/local/tomcat/webapps映射到宿主机目录下,将web应用打包后的war文件置放在该宿主机绑定的映射目录下,tomcat服务重启后,即能发现应web应用并加载运行应用服务;

docker exec -it tomcat-9.0.98 /bin/bash

执行日志

为了演示一个完整的tomcat部署服务过程,重新建一个tomcat镜像服务,命名为:tomcat-9.0.98-2 ,docker镜象为:tomcat:9.0.98-jdk8-corretto-al2,此镜像为我们已拉取imags中的tomcat镜像为运行环境基础;

在Volumes卷中,为docker容器中tomcat的webapps和logs虚拟目录添加docker服务主机上(宿主机)映射目录,用于在服务主机上上传服务和查看tomcat的运行日志;

创建成功后,在Contaners 列表运行tomcat-9.0.9-2服务;

在docker服务主机上,进入为docker容器tomcat服务映射的宿主机logs目录上,此时已在docker服务主机上生成tomcat运行日志;

向docker服务主机上映射的docker容器tomcat服务webapps目录上传可运行的web应用程序,此ROOT为从另一个tomcat-9.x.x.tar.gz解压版webapps上复制上传而来,为tomcat的运行后的默认首页;

上传ROOT应用程序相关文件后,重启tomcat服务,因为在tomcat服务启动状态下上传web应用,会导致web应用加载不完整或加载出错;

包含tomcat服务的docker容器重启完毕后,再一次访问docker服务器映射的容器端口:8080,此时tomcat服务的默认大猫猫显示出来了;

再一次进入到docker容器里,查看容器里的/usr/local/tomcat/webapps目录下已经能看到上传的ROOT应用目录;

docker exec -it tomcat-9.0.98-2 /bin/bash

执行日志

到此以一个完整的流程,演示安装Portainer,使用Portainer来管理远程docker服务,以及拉取docker镜像,部署docker容器服务;

结束

在Portainer中还有很多细分的功能,因篇幅问题以及个人熟悉程度,未在本章中展示,期待大家自行摸索与测试;

注:在安装和使用过程中,如遇到问题,可以向国产AI大模型Deepseek V3版本提问,能够获得有效的方案和精准的回答。Deepseek响应快,步骤清晰、答案精准,值的使用;

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

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

相关文章

C++入门14——set与map的使用

在本专栏的往期文章中,我们已经学习了STL的部分容器,如vector、list、stack、queue等,这些容器统称为序列式容器,因为其底层是线性序列的数据结构,里面存储的是元素本身。而本篇文章我们要来认识一下关联式容器。 &am…

浅析云场景SSD实时迁移技术

在数据中心的运营管理中,负载均衡和系统容错是确保高效稳定运行的关键。SSD实时迁移技术,为解决这些问题提供了创新方案,成为数据中心技术发展的重要驱动力。 以AI训练任务为例,其运行时间长且无需用户频繁交互。数据中心的负载会…

同一局域网远程控制其他电脑以及Windows家庭版开启远程桌面等解决方法

1. 前言 家庭版的 Windows 10 和 Windows 11 默认不支持远程桌面功能。然而,我们可以通过使用 RDPWrap 项目来启用这一功能。 电脑的“设置”-> “远程桌面设置”中查看系统是否支持远程桌面 2.下载安装 RDPWrap 安装该项目使家庭版也支持远程桌面 项目地址&…

DeepSeek-R1:将强化学习用于激励大型语言模型的推理能力

目录 引言 一、DeepSeek-R1的贡献 二、DeepSeek-R1的方法 2.1、DeepSeek-R1-Zero:基础模型上的强化学习 2.2、DeepSeek-R1:冷启动强化学习 2.3、蒸馏:赋予小模型推理能力 三、DeepSeek-R1实验结果 3.1、模型优点 3.2、模型缺点 四、…

SQL Server 使用SELECT INTO实现表备份

在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误。在 SQL Server 中,可以使用 SELECT INTO 语句将数据从一个表备份到另一个表。 备份表的 SQL 语法: SELECT * INTO 【备份表名】 FROM 【要备份的表】 SEL…

数据库管理-第287期 Oracle DB 23.7新特性一览(20250124)

数据库管理287期 20245-01-24 数据库管理-第287期 Oracle DB 23.7新特性一览(20250124)1 AI向量搜索:算术和聚合运算2 更改Compatible至23.6.0,以使用23.6或更高版本中的新AI向量搜索功能3 Cloud Developer包4 DBMS_DEVELOPER.GET…

Android BitmapShader简洁实现马赛克,Kotlin(二)

Android BitmapShader简洁实现马赛克,Kotlin(二) 这一篇 Android BitmapShader简洁实现马赛克,Kotlin(一)-CSDN博客 遗留一个问题,xml定义的MyView为wrap_content的宽高,如果改成其…

程序代码篇---C++类.c\.h

文章目录 前言第一部分:C中的类1.类的定义2.成员变量(属性)3.成员函数(方法)4.访问修饰符私有受保护公有 5.构造函数和析构函数成员初始化列表方法重载 6.继承7.多态8.友元 第二部分:.c与.h文件头文件&…

智能化加速标准和协议的更新并推动验证IP(VIP)在芯片设计中的更广泛应用

作者:Karthik Gopal, SmartDV Technologies亚洲区总经理 智权半导体科技(厦门)有限公司总经理 随着AI技术向边缘和端侧设备广泛渗透,芯片设计师不仅需要考虑在其设计中引入加速器,也在考虑采用速度更快和带宽更高的总…

【问题】Chrome安装不受支持的扩展 解决方案

此扩展程序已停用,因为它已不再受支持 Chromium 建议您移除它。详细了解受支持的扩展程序 此扩展程序已停用,因为它已不再受支持 详情移除 解决 1. 解压扩展 2.打开manifest.json 3.修改版本 将 manifest_version 改为3及以上 {"manifest_ver…

大数据和人工智能融合展望

大数据技术和人工智能(AI)的融合是科技发展的方向,其实很多年前就已经提出来并在不断前行,未来几年将会因为算力的进步和AI技术的飞速发展继续加速。以下是我整理的几个可能的发展方向: 1. 数据处理和分析自动化&…

Vue入门(Vue基本语法、axios、组件、事件分发)

Vue入门 Vue概述 Vue (读音/vju/,类似于view)是一套用于构建用户界面的渐进式框架,发布于2014年2月。与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于上手,还便于与第三…

[云讷科技]Kerloud Falcon四旋翼飞车虚拟仿真空间发布

虚拟仿真环境作为一个独立的专有软件包提供给我们的客户,用于帮助用户在实际测试之前验证自身的代码,并通过在仿真引擎中添加新的场景来探索新的飞行驾驶功能。 环境要求 由于环境依赖关系,虚拟仿真只能运行在装有Ubuntu 18.04的Intel-64位…

postgresql15的启动

PostgreSQL是一个功能非常强大的、源代码开放的客户/服务器关系型数据库管理系统,且因为许可证的灵活,任何人都可以以任何目的免费使用、修改和分发PostgreSQL。现在国产数据库大力发展阶段,学习和熟悉postgresql的功能是非常有必要的&#x…

Python NumPy(1):介绍、Ndarray对象、NumPy数据类型

1 介绍 NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含: 一个强大的N…

sql语句--新手入门增删改查保姆级教学

一丶在数据库管理系统中,SQL(Structured Query Language,结构化查询语言)是用于访问和操作数据库的标准编程语言。以下将通过一个假设的“articles”表(代表文章或博客条目)来展示SQL中的增(Ins…

Java开发的商城系统怎样

ava 开发的商城系统具有多方面的优势,也存在一定的局限性,以下是详细分析: 优势 跨平台性:Java 语言具有 “一次编写,到处运行” 的特性,基于 Java 开发的商城系统可以在不同的操作系统上运行,…

INCOSE需求编写指南-第1部分:介绍

第1部分:介绍Section 1: Introduction 1.1 目的和范围 Purpose and Scope 本指南专门介绍如何在系统工程背景下以文本形式表达需求和要求陈述。其目的是将现有标准(如 ISO/IEC/IEEE 29148)中的建议以及作者、主要贡献者和审稿员的最佳实践结…

ubuntu如何测试网络性能

在 Ubuntu 中,有多种工具可以测试网络性能,包括带宽、延迟、丢包率等。以下是常用的工具和方法: 1. 使用 ping 测试网络延迟和连通性 ping 是最基本的网络测试工具,用于测试目标主机的连通性和延迟。 命令: ping &l…

python爬虫验证下载的图片是否损坏方法

一、最佳方法 使用PIL库的Image进行验证,简单明了 from PIL import Image import io import requestsdef is_image_valid(resp):try:with Image.open(io.BytesIO(resp.content)) as img:img.verify() # 验证图片是否有效return Trueexcept Exception as e:print(f&…