安装docker可视化工具 Portainer中文版(ubuntu上演示,所有docker通用) 支持控制各种容器,容器操作简单化 降低容器门槛

 以下有免费的4090云主机提供ubuntu22.04系统的其他入门实践操作

地址:星宇科技 | GPU服务器 高性能云主机 云服务器-登录

相关兑换码星宇社区---4090算力卡免费体验、共享开发社区-CSDN博客

兑换码要是过期了,可以私信我获取最新兑换码!!!

之所以推荐给大家使用,是因为上面的云主机目前是免费使用的,不需要大家再去安装虚拟机,部署虚拟机,环境都搭配好了,非常适合新手入门,减少搭建的时间,把时间都用在实践上。

一、概念准备

Portainer 是一款用于简化 Docker 和 Kubernetes 环境管理的开源工具,它通过提供一个集中化的管理界面大大降低了容器技术的学习曲线,并提高了工作效率。

如何利用 Docker 在本地内部署 Portainer 并通过实践操作实现外网访问本地局域网部署的 Portainer 。

Portainer 支持 X86ARM、 ARM64 平台的系统

在这里我们通过ubuntu22.04的操作系统进行演示

二、安装Portainer流程

1、安装docker

如果没有的话参考下面这篇文章

在 Ubuntu 22.04 上安装 Docker 25.0.5 其他版本类似-CSDN博客

想知道自己机器本身有没有docker 通过下面命令查找

docker --version

有类似的输出 说明是有docker的,还会给出对应的docker版本

2、安装Portainer

方法一 通过Docker Hub(速度慢,修改有门槛)
​
docker pull outlovecn/portainer-cn 
#或者 
docker pull ghcr.io/outlovecn/portainer-cn:main​

第一个容易出现连接超时 如下图   推荐第二个,但是下载速度慢,需要配置加速器 

第一个的原因是为什么放在文末解决 

接下来走下一步

# 文件格式版本,一般固定 3.8
version: "3.8"# 服务(容器)列表
services:portainer:# 镜像:官方社区版(CE)带中文汉化image: portainer/portainer-ce:latest# 容器运行后的真实名字,方便 docker ps 查看container_name: portainer# 重启策略:只要没被人为 stop,异常退出会自动拉起restart: unless-stopped# 端口映射:左边是宿主机端口,右边是容器端口ports:- "9000:9000"   # Web UI 端口- "8000:8000"   # Edge Agent 端口(可选)# 数据卷:左边是卷名或宿主路径,右边是容器内部路径volumes:# 持久化 Portainer 配置、数据库- portainer_data:/data# 把宿主机 Docker Socket 挂进来,使 Portainer 可以管理本机 Docker- /var/run/docker.sock:/var/run/docker.sock# 环境变量:时区environment:TZ: Asia/Shanghai# 健康检查:每 30 秒用 curl 检测 9000 端口是否正常healthcheck:test: ["CMD", "curl", "-f", "http://localhost:9000/api/status"]interval: 30stimeout: 10sretries: 3# 卷声明:portainer_data 会被 Docker 自动创建为 named volume
volumes:portainer_data:

下面是对上面代码的表格解释,可自行修改和优化

语句作用建议
version: "3.8"声明 compose 文件格式的版本号一般保持 3.8 即可,除非你的 Docker Engine 非常旧
services:定义要启动的容器集合下面缩进一格的都是“一个容器”
portainer:这个容器的逻辑名字,可随意改改名后 container_name 最好一起改,方便记忆
image: outlovecn/portainer-cn:latest指定镜像源想换官方版可改成 portainer/portainer-ce:latest
container_name: portainer真正跑起来的容器名字不能与已有容器重名
restart: unless-stopped只要用户没手动 docker stop,任何情况退出都会自启测试环境可改成 no
ports: - "8000:8000"把宿主机 8000 端口映射到容器 8000 端口宿主机端口冲突时改左边,如 "18000:8000"
- "9000:9000"同上,9000 是 Portainer Web UI 端口常用改法 "9001:9000"
volumes:把宿主机目录或卷挂进容器
- portainer_data:/data把名为 portainer_data 的卷挂到 /data卷名可改,数据会持久化
- /var/run/docker.sock:/var/run/docker.sock让 Portainer 能管理宿主机的 Docker生产环境出于安全考虑,可以改用 TCP 方式
environment: TZ: Asia/Shanghai设置容器时区国外服务器可改成 UTC
healthcheck:自定义健康检查
test: ["CMD", "wget", "--spider", "http://localhost:9000/api/status"]每 30 秒用 wget 去访问自身 9000 端口如果镜像里没有 wget,可换成 curl
interval: 30s timeout: 10s retries: 3检查间隔 / 单次超时 / 重试次数调错时可以适当加大

方法一优化说明(关键改进点)

版本升级

version: "3.8":使用新版本 Compose 语法(兼容性更好,支持更多特性)

安全与资源控制

端口精简:移除 8000 端口(仅需管理 Edge 设备时启用)

健康检查:自动监控服务状态,异常时触发重启。

存储优化

命名卷:将 ./dockerconfig/portainer 改为命名卷 portainer_data,避免路径依赖问题,提升数据持久化可靠性。

稳定性增强

restart: unless-stopped:手动停止后不再自动重启,更符合运维预期

时区配置:通过 TZ: Asia/Shanghai 显式设置容器时区(避免日志时间混乱)。

方法二 拉取portainer镜像
1、拉取portainer对应镜像

拉取镜像网址Install Portainer BE with Docker on Linux | Portainer Documentation

docker pull portainer/portainer:last
#可删掉后面的":last"

由于我加了last,会下载最新的,不加的话不影响后续操作

对镜像打tag(可选)

docker tag portainer/portainer:latest myrepo/portainer:v1.0
#验证tag有没有打成功
docker images | grep portainer

如果成功了,能看到有两条记录,第一列是名字,可以看到名字不同,第二列是版本号 第三列是对应的ID  可以看到IMAGE ID 相同

我们就可以通过新名字运行容器,如

docker run -d -p 9000:9000 --name portainer myrepo/portainer:v1.0

2、根据portainer镜像开始启动容器
sudo docker run -d \
# 以“后台守护进程”方式启动容器-p 8000:8000 \
# 把宿主机的 8000 端口映射到容器 8000 端口-p 9000:9000 \
# 把宿主机的 9000 端口映射到容器 9000 端口--name portainer \
# 给容器起个名字叫 portainer(方便 docker ps/stop/rm)--restart=always \
# 只要 Docker 服务启动,这个容器就跟着自动重启-v /var/run/docker.sock:/var/run/docker.sock \
# 把宿主机的 Docker 套接字挂进去,让 Portainer 能“管理”宿主机 Docker-v portainer_data:/data \
# 把名为 portainer_data 的卷挂到容器 /data 目录,持久化配置 如果没有提前创建,会自动创建myrepo/portainer:v1.0
# 用本地(或私有仓库)已经打好 tag 的镜像
#myrepo/portainer:v1.0  更换成对应容器名

 -v portainer_data:/data \  这个命令的提前创建命令如下

docker volume create portainer_data

如果有下面错误 要看有没有输错(拼写错误),或者是格式不对(多余空格等)

第三个框里面的permission denied是没有sudo的原因导致的

可以发现咱们的容器已经开出来了,之所以选择10001,是因为咱们的虚拟机是在星宇云社区上开出来的,允许的业务端口是10000和10001,在这里咱们选择对应宿主机的10001,一会才能通过公网访问咱们的portainer的web服务

查看端口占用

sudo lsof -i:10001
#查看其他端口,修改10001即可

可以发现,10001端口已经被容器占用了,这样就不影响我们访问portainer

三、放行portainer端口

放行portainer特定的端口

可参考linux入门,ubuntu22.04系统里的ssh服务(一)(含部分防火墙操作),方便开发-CSDN博客

上面文章提供了防火墙的放行操作,这里也在写一次

sudo iptables -A INPUT -p tcp --dport 10001 -j ACCEPT
iptables -L -n
#查看放行规则#二选一
sudo ufw allow 10001/tcp  
sudo ufw reload
#放行10001端口  重新加载防火墙sudo ufw status numbered 
#查看防火墙规则是否有对应端口放行

放行对应的端口并验证

如果有宝塔的话,放行端口更方便,参考下面这篇文章即可

入门级操作 开肝!!!宝塔账号密码修改、IP白名单访问限制等等操作 (二)宝塔忘记密码怎么办、重置密码大全~!-CSDN博客

四、访问portainer服务

1、如果是星宇云社区开出来的虚拟机(必看)

跟开头一样网址是GPU租赁,GPU服务器租用,GPU租用平台-星宇科技

登陆后找到控制台

找到对应机器

查看IP和对应端口

因为社区的机器加了防火墙防护所以

        第一行远程端口是指外网ssh的连接端口,第二行业务端口10000是指机器本身的ip+10000端口可以通过外网157.xxx.xxx.xxx:40225访问,第三行同理,设计了部分网络的跳转,这里需要一定的基础理解

因此portainer的web访问地址是:http://157.148.20.77:xxxx

末尾的端口就看我们是把portainer的web的访问端口指向机器的哪一个业务端口了

2、如果是在自己电脑弄

访问地址:https://本机IP:xxx

xxx指向对应得端口即可

五、故障排除

方法一的解决方案是更换镜像源

配置docker的json文件即可 

sudo nano /etc/docker/daemon.json

镜像源地址可以参考

在 Ubuntu 22.04 上安装 Docker 25.0.5 其他版本类似-CSDN博客

文章里面提供了我自己常用的镜像加速源,非常好用,这里给出几个示例

腾讯云https://mirror.ccs.tencentyun.com
网易https://hub-mirror.c.163.com
中国科技大学https://docker.mirrors.ustc.edu.cn
七牛云https://reg-mirror.qiniu.com

或者用下面方法配置镜像源也可以 (容易出错,新手不建议)

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://<你的ID>.mirror.aliyuncs.com"]
}
EOF#https://<你的ID>.mirror.aliyuncs.com  换成自己账号的阿里云加速

相关操作参考下面这篇文章的末尾

centos安装docker小白教程(详细版)-CSDN博客

这个方法非常不建议,而且阿里云的镜像加速源个人感觉不稳定!

sudo systemctl daemon-reload
sudo systemctl restart docker
#重启docker即可

后面portainer的web上得操作后续更新!

后续更新请及时关注吧

请各位帅哥美女们多多支持!!小花花小心心  更多入门知识慢慢补充啦

后期持续关注!

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

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

相关文章

ansible批量部署zabbix客户端

✅ansible编写剧本步骤 1️⃣创建roles目录结构2️⃣在group_vars/all/main.yml中定义变量列表3️⃣在tasks目录下编写tasks任务4️⃣在files目录下准备部署文件5️⃣在templates目录下创建j2模板文件6️⃣在handlers目录下编写handlers7️⃣在roles目录下编写主playbook8️⃣运…

蚂蚁数科AI数据产业基地正式投产,携手苏州推进AI产业落地

近日&#xff0c;蚂蚁数科AI数据产业基地在太仓智汇谷科技创新园正式投产。该基地作为苏州市首个AI数据产业基地&#xff0c;旨在通过跨行业人才与前沿技术&#xff0c;为长三角制造业、金融、医疗等领域的大模型落地提供场景化、高质量的训练数据支撑。数据被视为AI学习的核心…

计算机的网络体系及协议模型介绍

目录 1、网络协议介绍 1.1、定义 1.2、基本作用 1.3、协议的主要内容 2、网络协议分层 2.1、协议分层原因 2.2、网络协议分层的缺点 2.3、OSI协议和TCP/IP协议的联系 3、TCP/IP 协议族 3.1、定义介绍 3.2、组成 1、应用层 2、运输层 3、网络层 3.3、底层流程 4、…

密码管理安全防御

密码管理是信息安全的核心环节,其目标是通过规范密码的生成、存储、传输、验证和生命周期管理,防止未授权访问,保护用户账号和系统资源的安全。以下从核心原则、技术实践、常见问题及解决方案等方面详细说明: 一、密码管理的核心原则 密码管理需遵循“安全性”与“可用性…

Java异步日志系统性能优化实践指南:基于Log4j2异步Appender与Disruptor

Java异步日志系统性能优化实践指南&#xff1a;基于Log4j2异步Appender与Disruptor 一、技术背景与应用场景 在高并发的后端应用中&#xff0c;日志记录往往成为性能瓶颈之一。同步写日志会阻塞业务线程&#xff0c;导致响应延迟&#xff1b;而简单的异步队列实现又可能出现积压…

Mybatis07-缓存

一、缓存机制的原理计算机每次从mysql中执行sql语句&#xff0c;都是内存与硬盘的通信&#xff0c;对计算机来说&#xff0c;影响效率。因此使用缓存机制。1-1、MyBatis 的缓存机制&#xff1a;执行 DQL&#xff08;select 语句&#xff09;的时候&#xff0c;将查询结果放到缓…

【机器学习深度学习】LoRA 与 QLoRA:大模型高效微调的进阶指南

目录 前言 一、LoRA&#xff1a;低秩微调的经典之作 二、QLoRA&#xff1a;效率与精度的升级版 三、LoRA vs QLoRA&#xff1a;如何选择&#xff1f; 3.1 性能维度对比 3.2 根据「显卡资源」选择 3.3 根据「任务类型与目标」选择 3.4 根据「模型规模」选择 3.5 根据…

教育行业网络升级最佳实践:SD-WAN、传统方案与混合方案对比分析

随着教育行业的数字化转型不断深入&#xff0c;网络的稳定性、灵活性和安全性成为各类教育应用&#xff08;如远程课堂、智慧校园和教育云平台&#xff09;的核心支撑。然而&#xff0c;传统的 MPLS 专线方案成本高、扩展性差&#xff0c;而纯 SD-WAN 的方案在极高可靠性要求的…

[黑马头条]-文章列表加载

目录 1.1)需求分析 1.2)表结构分析 ap_article 文章基本信息表 ap_article_config 文章配置表 ap_article_content 文章内容表 导入文章数据库 实现思路 接口定义 功能实现 定义接口 编写mapper文件 编写业务层代码 实现类&#xff1a; 定义常量类 编写控制器代码 …

使用TIANAI-CAPTCHA进行行为验证码的生成和缓存的二次校验

1.导入依赖&#xff1a;<dependency><groupId>cloud.tianai.captcha</groupId><artifactId>tianai-captcha-springboot-starter</artifactId><version>1.5.2</version> </dependency>2.在application.yml中配置验证码相关配置…

db.refresh()的重复使用和db.rollback()

db.refresh()在 SQLAlchemy 中&#xff0c;db.refresh() 用于从数据库中重新加载对象的状态&#xff0c;确保对象属性与数据库中的实际数据保持一致。下面详细介绍其使用场景和作用&#xff1a;1.获取数据库生成的值当数据库自动生成字段&#xff08;如自增 ID、默认值、触发器…

《Web安全之机器学习入门》读书笔记总结

目录 一、案例总结 1、基础知识 &#xff08;1&#xff09;第1章 通向智能安全的旅程 &#xff08;2&#xff09;第2章 打造机器学习工具箱 &#xff08;3&#xff09;第3章 机器学习概述 &#xff08;4&#xff09;第4章 Web安全基础 2、安全案例 &#xff08;1&#…

github 近期热门项目-2025.7.20

github 近期热门项目-2025.7.20 GitHub 上近期热门或趋势项目的信息可以从多个来源获取,包括 GitHub Trending 页面、技术社区推荐、以及各大技术媒体的报道。以下是一些近期在 GitHub 上备受关注的项目类别和示例: 1. AI 与机器学习项目 随着 AI 技术的快速发展,许多开源…

使用Python清理Excel中的空行和单元格内部空行:初学者指南

前言 作为数据处理人员或办公室工作者,你可能经常遇到Excel文件中存在多余空行或单元格内有多余空行的问题。这些不必要的空白会影响数据的美观性,更重要的是会给后续的数据分析、合并或处理带来麻烦。本文将介绍一个简单的Python脚本,帮助你高效地解决这些问题。 很多工具…

华为欧拉系统(openEuler)安装 Docker 容器完整教程

&#x1f525; 前言&#xff1a;在国产化操作系统日益普及的当下&#xff0c;华为欧拉系统&#xff08;openEuler&#xff09;凭借其稳定性和安全性受到不少用户青睐。但 Docker 官方暂未提供对 openEuler 的原生支持&#xff0c;不过好在 openEuler 与 CentOS 底层架构兼容&am…

数据结构--JDK17新增语法和顺序表

一.yield关键字用于switch语句上的case代码块的返回值举例&#xff1a;二.var关键字作用&#xff1a;当类型名字较长时可以简化代码。注意事项&#xff1a;1.不能使用var来声明字段2.不能使用var来声明方法参数3.不能使用var来声明方法返回类型4.使用时必须初始化&#xff0c;但…

1 渗透基础

目录 基础前沿 1 vulhub环境搭建 1 proxychains工具&#xff1a;编辑配置文件 2 docker docker环境搭建 配置docker的代理&#xff1a; 2 nginx编译安装--FPM 1 php.ini 2 php-fpm 3 nginx 4 nginx php-fpm php 1 基本角色分工 2. 请求处理全流程 步骤 1&#xff…

基于Java+SpringBoot 的榆林特色旅游网站

源码编号&#xff1a;S678源码名称&#xff1a;基于SpringBoot 的榆林特色旅游网站用户类型&#xff1a;双角色&#xff0c;用户、管理员数据库表数量&#xff1a;22 张表主要技术&#xff1a;Java、Vue、ElementUl 、SpringBoot、Maven运行环境&#xff1a;Windows/Mac、JDK1…

Python设计模式深度解析:单例模式(Singleton Pattern)完全指南

Python设计模式深度解析&#xff1a;单例模式&#xff08;Singleton Pattern&#xff09;完全指南前言什么是单例模式&#xff1f;单例模式的三个关键要素基础实现&#xff1a;异常控制式单例Python中的经典单例实现1. 使用 __new__ 方法实现2. 线程安全的单例实现3. 装饰器实现…

LVS 原理详解及部署(包含实验案例)

一、集群和分布式简介1.系统性能扩展方式Scale Up&#xff08;向上扩展&#xff09;&#xff1a;通过增强单台服务器的硬件性能&#xff08;如提升 CPU、内存、存储等&#xff09;来提高处理能力&#xff0c;适用于业务初期或对单点性能要求高的场景。这种方式简单易行&#xf…