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

安装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.8version: \"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: 30s timeout: 10s retries: 3# 卷声明:portainer_data 会被 Docker 自动创建为 named volumevolumes: 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 ACCEPTiptables -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/dockersudo tee /etc/docker/daemon.json <<-\'EOF\'{ \"registry-mirrors\": [\"https://.mirror.aliyuncs.com\"]}EOF#https://.mirror.aliyuncs.com 换成自己账号的阿里云加速

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

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

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

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

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

后续更新请及时关注吧

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

后期持续关注!