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镜像版本;

选择一个最新的版本,用来安装镜像与测试;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打包后的文件置放在该宿主机绑定的映射目录下,tomcat服务重启后,即能发现应WEB用并加载运行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为从另一个tomcat9.tgz解压版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响应快,步骤清晰、答案精准,值的使用;

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

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

相关文章

maven helper插件使用

在intellij idea插件市场搜索maven help并安装安装好后会多一个Dependency Analyzer 场景1:排除某个依赖 点击完exclude pom文件会被修改 然后刷新下maven,相应的依赖就会被排除了。

【VRChat · 改模】Unity2019、2022的版本选择哪个如何决策,功能有何区别;

总览 1.Unity2019、2022的版本的选择 2.Unity添加着色器教程 一、Unity2019、2022的版本的选择 1.Unity2019 和 Unity2022 的区别,VRChat SDK 为何要区分两个版本 我是外行,最开始以为的是,2019 和 2022 的变化是基于这个模型本身的。 也…

RHCE实验详解

目录 实验分析 环境拓扑结构 项目需求 主机环境描述 实验步骤 一、密钥互信和主机名更改 二、DNS 三、NGINX 四、MARIADB 五、NFS 六、NTP 七、论坛服务 结果展示及痛点解答 实验分析 环境拓扑结构 项目需求 1. 172.25.250.101 主机上的 Web 服务要求提供 www.ex…

学Python的人…

学Python的人… 一、Python能干什么? 1.爬虫:前几年,深度学习还没发展起来的时候,书店里Python就和爬虫挂钩,因为Python写爬虫确实方便。 2.数据分析:Python有各种的数据分析库可以方便使用&#xff0…

docker 安装 mysql 详解

在平常的开发工作中,我们经常需要用到 mysql 数据库。那么在docker容器中,应该怎么安装mysql数据库呢。简单来说,第一步:拉取镜像;第二步:创建挂载目录并设置 my.conf;第三步:启动容…

华为E9000刀箱服务器监控指标解读

美信监控易内置了数千种常见设备监测器,能够监测超过20万项指标。这些指标涵盖了从硬件设备到软件系统,从网络性能到安全状态等各个方面。如下基于美信监控易——IT基础监控模块,对华为E9000刀箱服务器部分监控指标进行解读。 一、华为E9000…

自动化标注平台开源,基于 yolov8标注平台可本地部署

yolov8标注平台本地部署(docker部署),已调通yolov8模型自动预标注功能。 下面开始背景知识…… 1)数据标注为什么在人工智能时代如此重要? 数据标注在人工智能时代如此重要,原因如下: 为机器…

PyTorch使用教程(6)一文讲清楚torch.nn和torch.nn.functional的区别

torch.nn 和 torch.nn.functional 在 PyTorch 中都是用于构建神经网络的重要组件,但它们在设计理念、使用方式和功能上存在一些显著的区别。以下是关于这两个模块的详细区别: 1. 继承方式与结构 torch.nn torch.nn 中的模块大多数是通过继承 torch.nn…

海思Hi3516CV610 -----芯片说明

Hi3516CV610这颗超高清智慧视觉SoC芯片是由海思技术有限公司推出的,其首发量产的时间是在2024年4。标志着海思正式回归安防市场,并在IPC SoC市场中展开竞争。 关键特性 ●4K20,6M30分辨率 ●双目实时接入,支撑枪球一体机等双目机…

iOS-支付相关

支付宝支付 #import <AlipaySDK/AlipaySDK.h> //orderStrAliPay为服务端传的订单信息 //fromScheme为应用配置的schemeUrl标识&#xff0c;用户支付包支付成功后跳转会本应用内 //callback回调需要在- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url 中调…

go读取excel游戏配置

1.背景 游戏服务器&#xff0c;配置数据一般采用csv/excel来作为载体&#xff0c;这种方式&#xff0c;策划同学配置方便&#xff0c;服务器解析也方便。在jforgame框架里&#xff0c;我们使用以下的excel配置格式。 然后可以非常方便的进行数据检索&#xff0c;例如&#xff…

热点营销新视角:品牌如何巧妙“跟风”不踩雷?

在当今信息爆炸的时代&#xff0c;热点事件如同流星划过夜空&#xff0c;转瞬即逝&#xff0c;却总能吸引无数眼球。而软文营销作为品牌推广的重要手段之一&#xff0c;如何巧妙“跟风”热点&#xff0c;既能借势提升品牌曝光度&#xff0c;又能避免陷入雷区&#xff0c;成为众…

Trimble三维激光扫描-地下公共设施维护的新途径【沪敖3D】

三维激光扫描技术生成了复杂隧道网络的高度详细的三维模型 项目背景 纽约州北部的地下通道网络已有100年历史&#xff0c;其中包含供暖系统、电线和其他公用设施&#xff0c;现在已经开始显露出老化迹象。由于安全原因&#xff0c;第三方的进入受到限制&#xff0c;在没有现成纸…

TDengine 做 Apache SuperSet 数据源

‌Apache Superset‌ 是一个现代的企业级商业智能&#xff08;BI&#xff09;Web 应用程序&#xff0c;主要用于数据探索和可视化。它由 Apache 软件基金会支持&#xff0c;是一个开源项目&#xff0c;它拥有活跃的社区和丰富的生态系统。Apache Superset 提供了直观的用户界面…

K8S-Pod的环境变量,重启策略,数据持久化,资源限制

1. Pod容器的三种重启策略 注意&#xff1a;k8s所谓的重启容器指的是重新创建容器 cat 07-restartPolicy.yaml apiVersion: v1 kind: Pod metadata:name: nginx-web-imagepullpolicy-always spec:nodeName: k8s233.oldboyedu.com## 当容器异常退出时&#xff0c;始终重启容器r…

03垃圾回收篇(D1_垃圾收集器算法底层导论)

目录 一、为什么我们要去了解垃圾收集和内存分配 二、对象已死&#xff1f; 1. 引用计数算法 2. 可达性分析算法 3. 再谈引用 4. 生存还是死亡 5. 回收方法区 三、垃圾收集算法 1. 简介 2. 分代收集理论 2.1. 弱分代/强分代假说 2.2. 前面两代假说的缺陷 3. 标记-清…

【wiki知识库】08.添加用户登录功能--后端SpringBoot部分

目录 一、今日目标? 二、SpringBoot后端实现 2.1 新增UserLoginParam 2.2 修改UserController 2.3 UserServiceImpl代码 2.4 创建用户上下文工具类 2.5?通过token校验用户&#xff08;重要&#xff09; 2.6 创建WebMvcConfig 2.7 用户权限校验拦截器 一、今日目标 上…

分布式 IO 模块:开启药品罐装产线高效生产新纪元

在药品生产的精密领域&#xff0c;每一个环节都关乎着客户的健康与安全。药品罐装产线作为药品生产的关键环节&#xff0c;其高效运行与精准控制至关重要。明达技术MR30分布式 IO 模块&#xff0c;正以其卓越的性能&#xff0c;成为实现药品罐装产线高效控制&#xff0c;确保产…

【北京迅为】iTOP-4412全能版使用手册-第八十七章 安装Android Studio

iTOP-4412全能版采用四核Cortex-A9&#xff0c;主频为1.4GHz-1.6GHz&#xff0c;配备S5M8767 电源管理&#xff0c;集成USB HUB,选用高品质板对板连接器稳定可靠&#xff0c;大厂生产&#xff0c;做工精良。接口一应俱全&#xff0c;开发更简单,搭载全网通4G、支持WIFI、蓝牙、…

基于海思soc的智能产品开发(视频的后续开发)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们讨论了camera&#xff0c;也讨论了屏幕驱动&#xff0c;这些都是基础的部分。关键是&#xff0c;我们拿到了这些视频数据之后&#xff0c;…