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

发布于:2025-07-22 ⋅ 阅读:(14) ⋅ 点赞:(0)

 以下有免费的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: 30s
      timeout: 10s
      retries: 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上得操作后续更新!

后续更新请及时关注吧

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

后期持续关注!


网站公告

今日签到

点亮在社区的每一天
去签到