当前位置: 首页 > news >正文

安装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.lryc.cn/news/594709.html

相关文章:

  • 板凳-------Mysql cookbook学习 (十二--------4)
  • 技能学习PostgreSQL中级专家
  • 借助AI学习开源代码git0.7之六write-cache
  • 基于 STM32 的数字闹钟系统 Proteus 仿真设计与实现
  • 从一开始的网络攻防(六):php反序列化
  • 金仓数据库:融合进化,智领未来——2025年数据库技术革命的深度解析
  • STM32 USB键盘实现指南
  • 最严电动自行车新规,即将实施!
  • FreeSwitch通过Websocket(流式双向语音)对接AI实时语音大模型技术方案(mod_ppy_aduio_stream)
  • 朝歌智慧盘古信息:以IMS MOM V6重构国产化智能终端新生态
  • 【初识数据结构】CS61B中的最小生成树问题
  • Car Kit重构车机开发体验,让车载应用开发驶入快车道
  • 【PTA数据结构 | C语言版】拓扑排序
  • OR条件拆分:避免索引失效的查询重构技巧
  • 【web自动化】-5- fixture集中管理和项目重构
  • 2024年ASOC SCI2区TOP,基于Jaya算法的粒子滤波器用于非线性模型贝叶斯更新,深度解析+性能实测
  • 代码随想录算法训练营第二十七天
  • 为什么 tcp_syncookies 不能取代半连接队列?
  • 【前端】jszip+file-saver:多个视频url下载到zip、页面预加载视频、预览视频、强制刷新视频
  • Python并发编程:突破GIL枷锁,高效利用多核CPU
  • 服务器系统时间不准确怎么办?
  • PHP反序列化漏洞详解
  • 4 种更新的方法将消息从安卓传输到 Mac
  • 2025三掌柜赠书活动第二十五期 网络安全应急响应实战
  • 2025年终端安全管理系统的全方位解析,桌面管理软件的分析
  • 基于python django的BOSS直聘网站计算机岗位数据分析与可视化系统,包括薪酬预测及岗位推荐,推荐算法为融合算法
  • 【设计模式】迭代器模式 (游标(Cursor)模式)
  • Netty实现单通道并发读写,即多路复用
  • Spring MVC 核心工作流程
  • 二、SpringBoot-REST开发