前言

Portainer 到底有没有必要装?其实主要看你平时怎么用 Docker。

如果一台服务器上只有一两个容器,偶尔执行一下 docker psdocker logs,命令行已经足够,专门再部署一个管理面板意义不大。但当容器慢慢增加以后,情况就会发生变化:哪些服务正在运行、哪个容器占用了什么端口、某个服务为什么退出、卷挂载到了哪里、镜像还有哪些版本,这些信息虽然都可以通过命令查到,但每天反复输入和确认并不一定是最高效的方式。

Portainer 的作用就在这里。

它并不是另一套容器技术,底层依然管理 Docker,只是把很多原本需要通过 CLI 完成的操作整理到了一个 Web 页面里。进入控制台以后,可以直接看到本机 Docker 环境中的容器、镜像、网络和存储卷,容器的启动、停止、重启以及状态查看也能直接完成。命令行依然可以继续使用,只是日常管理时多了一个更直观的入口。

这次我把 Portainer 部署在极空间上。

极空间本身已经具备 Docker 环境,所以并不需要额外准备一台服务器。部署时通过 Docker 启动 Portainer 容器,把 /var/run/docker.sock 挂载进去,让 Portainer 能够读取和管理宿主机上的 Docker;再把管理页面映射到 9000 端口。完成以后,在浏览器中访问 http://极空间IP:9000,初始化管理员账号,就能看到本机 Docker 的整体情况。

这个界面真正好用的地方,是查看信息的速度。

比如某个服务出了问题,进入容器详情页就可以看状态和相关信息;需要临时停掉一个应用,不必先确认容器名称再输入命令;管理的容器多起来以后,也不用依赖自己记住每一个端口和服务名称。对于刚开始接触 Docker 的用户,这种可视化方式也更容易理解“容器、镜像、网络、卷”之间到底是什么关系。

不过 Portainer 本质上是一个管理后台,所以它和普通网页服务还有一点不同:这个入口拥有控制 Docker 容器的能力,能在局域网里管理当然很方便,但一旦准备从外部网络访问,就不能只考虑“能不能打开”,还应该一起考虑账号和访问安全。

本文后半部分使用 cpolar 给 Portainer 的 9000 端口建立远程访问入口,并进一步配置固定二级子域名。这样极空间依然放在家里,Docker 服务也不需要迁移,外出时可以通过浏览器进入自己的 Portainer 控制台。

所以这篇文章的重点不是“用图形界面代替命令行”,而是给现有 Docker 环境增加一个集中管理入口。平时熟悉的命令依然保留,高频的查看、启停和状态管理则交给 Portainer,怎么用更快就选哪一种。对于已经在极空间上运行多个 Docker 服务的人,这种组合会比单独强调某一种管理方式更实用。

image-20251226150509958

1.在极空间部署Portainer

1.1ssh远程连接到极空间

  • 开启【SSH 服务】
  • 使用终端(Windows PowerShell / Mac Terminal)登录:
ssh root@IP

没有ssh的小伙伴可以参考cpolar官网这篇文章:《极空间别再吃灰了!开启SSH,秒变全能服务器!》

957c00e3b3f0ce8aa95df96aa41b8715

1.2验证docker是否开启

使用命令:

docker -v 
systemctl status -v

没有docker的小伙伴可以参考cpola官网这篇文章:《极空间开箱实录:从拆箱到远程访问保姆级教程,30分钟上手!》

image-20251017103712618

1.3安装Portainer

docker命令安装

docker run -d \
  -p 9000:9000 \
  --name portainer \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer

–restart=always 表示和 Docker 容器一样,当 Docker 重启了 Portainer 也重启,当 Docker 关闭了,Portainer 也关闭了。实时同步上。

5322a892eef23ef073080050e16f60f3

在浏览器中输入 http://极空间IP:9000 就能看到登录界面:

image-20251226151210573

1.4 简单使用Portainer

进来先注册用户密码:

image-20251226151621690

注册完要重启容器:

image-20251226152013099

输入重启命令:

docker stop portainer
docker start portainer

重启后,再次输入账户密码,启动成功:

image-20251226152329722

再次输入账户密码,即登录成功:

image-20251226152238192

选择local选项卡后本地docker详细信息展示:

image-20251226152541319

image-20251226152556607

在这里,我们就可以操控我们本地的服务啦~

image-20251226152759270

操控它的启停状态等,是不是很方便~

image-20251226152819847

点击这里,还能详细看它的状态:

image-20251226153114878

image-20251226153126289

image-20251226153512404

在企业或家庭环境中,我们常常将Portainer 部署在内网服务器或NAS上,用于集中管理Docker容器。然而,一旦离开本地网络——比如在家办公、出差途中,就无法直接访问这个强大的可视化运维界面。

传统的远程方案(如公网IP、端口映射、VPN)往往配置复杂、存在安全风险,或受限于网络环境。而cpolar作为一款轻量级内网穿透工具,恰好能优雅地解决这一痛点:

无需公网IP、无需改路由器、无需暴露整个服务器,只需一条命令,就能将Portainer的Web界面通过加密 HTTPS 隧道安全暴露到公网。

从此,无论你在咖啡馆、高铁还是家中,只要打开浏览器,输入cpolar提供的专属链接,即可像在局域网一样,实时管理你的容器、查看日志、部署服务——真正实现 “随时随地,掌控你的Docker”

本文将继续演示如何用cpolar快速打通内外网,让Portainer成为你口袋里的运维控制台。

2.安装cpolar

cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。

❤️以下是安装cpolar步骤:

使用一键脚本安装命令:

sudo curl https://get.cpolar.sh | sh

e464b045413a024674a93ea472511b0f

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)

sudo systemctl status cpolar

aa03713b56d9eef12a4da6b99d2e46ac

Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【http://ip:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:

打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。

3af79ad708cc47c5bbea0b63c2c7230d

3.配置公网地址

登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

  • 隧道名称:可自定义,本例使用了:Portainer,注意不要与已有的隧道名称重复
  • 协议:http
  • 本地地址:9000
  • 域名类型:随机域名
  • 地区:选择China Top

image-20251226153623504

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用地址访问。

image-20251226154031051

访问成功。

image-20251226154051983

4.保留固定公网地址

使用cpolar为其配置二级子域名,该地址为固定地址,不会随机变化。

image-20250918151358733

点击左侧的预留,选择保留二级子域名,地区选择china Top,然后设置一个二级子域名名称,我使用的是porr,大家可以自定义。填写备注信息,点击保留。

image-20251226154229559

登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑

image-20251226154555910

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名
  • 地区: China Top

点击更新

image-20251226154622456

更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。

image-20251226154646408

最后,我们使用固定的公网地址在任意设备的浏览器中访问,可以看到成功访问的页面,这样一个永久不会变化的二级子域名公网网址即设置好了。

image-20251226154733704

这样我们就可以随时随地管理我们docker容器啦!

总结

Portainer 更适合被理解成 Docker 的一个管理入口,而不是 Docker CLI 的替代品。需要批量查看容器状态、确认镜像、网络和存储卷时,Web 界面更加直观;遇到复杂排查、脚本化操作或者需要精确控制参数时,命令行依然有自己的优势,两种方式完全可以同时保留。

部署到极空间以后,Portainer 直接管理本机已有的 Docker 环境,不需要重新迁移原来的容器。再通过 cpolar 给 9000 端口提供远程访问入口,人在其他网络下也能进入这套管理界面;如果准备长期使用,固定二级子域名会比临时地址更便于保存。

需要特别注意的是,Portainer 和普通内容页面不同,它具备容器管理权限,因此远程开放以后,管理员密码和访问入口的保护不能省。对于只跑一两个容器的设备,Portainer 未必是必需品;但如果极空间里已经运行了多个 Docker 服务,希望把日常查看和管理集中起来,它确实能让整个环境清楚不少。

在这里插入图片描述

更多推荐