欢迎光临
我们一直在努力

极空间部署Portainer实战:Docker Socket、9000端口、容器管理与固定地址访问

🔥承渊政道:个人主页

❄️个人专栏: 《C语言基础语法知识》 《数据结构与算法》 《C++知识内容》 《Linux系统与网络知识》 《算法刷题指南》 《测评文章活动推广》 《大模型语言路线学习》 《MySQL数据库学习》 《Python知识内容》 《cpolar知识学习》

✨逆境不吐心中苦,顺境不忘来时路!✨

🎬 博主简介:

Docker服务刚装两三个时,命令行管理并不麻烦:docker ps看状态,docker logs查日志,偶尔再手动启停容器.但当NAS里的服务越来越多,真正影响效率的往往不是命令不会用,而是每次都要记容器名、端口和参数,紧急排查时还得在多个终端命令之间来回切换.这次我把Portainer部署到极空间,先通过SSH确认Docker环境,再把宿主机的Docker Socket挂进容器,让Portainer能够直接读取并操作本机Docker.部署完成以后继续初始化账号、进入local环境,实际查看本地容器列表,并完成容器启停和状态详情查看.本地9000端口跑通以后,再给Portainer增加外部访问入口,从随机公网地址切换到固定二级子域名.整篇重点不是把Portainer写成“点一点就能替代所有Docker命令”,而是把极空间 → Docker → Portainer → 容器管理 → 远程访问这条链真正跑通,同时把Docker Socket和公网管理入口的权限风险说明白.这类工具真正有价值的地方,也不只是“把命令做成按钮”,而是当容器数量上来以后,可以先在一个页面里判断谁在运行、谁停了、哪个需要进入详情,再决定要不要继续回到终端处理.这样巡检和排错路径会更清楚.

image-20251226150509958

目录

  • 1.Portainer真正解决什么问题
  • 2.先把Portainer和Docker的关系说清楚
  • 3.这篇实际要跑通哪些步骤
  • 4.通过SSH连接极空间
  • 5.检查Docker环境
  • 6.用docker run启动Portainer
  • 7.9000端口负责Portainer Web入口
  • 8.第一次使用先创建管理员账号
  • 9.按这次流程重启Portainer
  • 10.选择local环境
  • 11.为什么Docker Socket这么重要
  • 12.实际查看本地容器
  • 13.实际测试容器启停
  • 14.继续查看容器详情
  • 15.Portainer不是让Docker命令失去意义
  • 16.本地管理到这里已经跑通
  • 17.公网开放Portainer比开放普通Web服务更敏感
  • 18.安装cpolar
  • 19.打开cpolar Web UI
  • 20.给9000创建随机公网入口
  • 21.查看随机公网地址
  • 22.随机地址更适合先验证
  • 23.保留固定二级子域名
  • 24.编辑Portainer隧道
  • 25.查看固定地址
  • 26.最后从外部设备访问
  • 27.固定地址解决的是“入口稳定”
  • 28.这篇真正验证了哪些能力
  • 29.这套方案更适合什么场景
  • 30.最后把完整技术链重新看一遍
  • 总结

1.Portainer真正解决什么问题

Portainer更适合被理解成:

Docker环境的Web管理界面。

当一台NAS上已经有多个容器时,它可以把很多常见操作集中到浏览器里,例如:

  • 查看容器列表;
  • 查看运行状态;
  • 启动和停止容器;
  • 查看容器详情;
  • 继续进入对应资源页面。

这篇实际验证的是:

本地Docker环境识别、容器启停和状态详情。

至于镜像构建、卷、网络、Swarm等能力,虽然Portainer本身可以围绕这些资源继续管理,但这组步骤没有逐项演示,所以不把它们写成已经全部实测完成。


2.先把Portainer和Docker的关系说清楚

Portainer不是另一个容器运行时。

真正运行容器的仍然是:

Docker。

Portainer负责的是:

通过Web界面读取和操作Docker。

这篇最关键的一行配置其实不是9000端口,而是:

/var/run/docker.sock:/var/run/docker.sock

它让Portainer容器可以连接宿主机Docker守护进程。

也正因为如此,Portainer具备很高的管理权限。


3.这篇实际要跑通哪些步骤

整条链可以拆成:

  • 极空间开启SSH;
  • 检查Docker;
  • Docker启动Portainer;
  • 浏览器访问9000;
  • 初始化管理员;
  • 进入local环境;
  • 查看并操作本地容器;
  • 给9000增加外部访问入口。
  • 先把本地Docker管理跑通,再处理远程访问。


    4.通过SSH连接极空间

    执行:

    ssh root@IP

    页面:

    957c00e3b3f0ce8aa95df96aa41b8715

    后面的Docker部署都通过SSH终端完成。


    5.检查Docker环境

    执行:

    docker -v
    systemctl status -v

    结果:

    image-20251017103712618

    确认极空间上的Docker已经可用以后,再继续部署Portainer。


    6.用docker run启动Portainer

    执行:

    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

    结果:

    5322a892eef23ef073080050e16f60f3

    这条命令里几个参数最关键:

    • Web端口:9000:9000
    • 容器名:portainer
    • 重启策略:–restart=always
    • Docker Socket:/var/run/docker.sock:/var/run/docker.sock
    • Portainer数据卷:portainer_data:/data
    • 镜像:portainer/portainer

    7.9000端口负责Portainer Web入口

    浏览器访问:

    http://极空间IP:9000

    页面:

    image-20251226151210573

    做到这里,可以确认:

    浏览器 → 极空间9000 → Portainer

    已经跑通。


    8.第一次使用先创建管理员账号

    初始化页面:

    image-20251226151621690

    Portainer后面能够管理本机Docker,所以这个账号不是普通导航页账号。

    如果以后准备公网访问,密码强度要按高权限管理后台来对待。


    9.按这次流程重启Portainer

    页面:

    image-20251226152013099

    执行:

    docker stop portainer
    docker start portainer

    重启以后重新进入:

    image-20251226152329722

    再次输入账号密码。

    登录成功:

    image-20251226152238192


    10.选择local环境

    进入Portainer以后选择:

    local

    页面:

    image-20251226152541319

    继续:

    image-20251226152556607

    这里显示的是本机Docker环境。

    能够看到local环境,说明前面的Docker Socket连接已经发挥作用。


    11.为什么Docker Socket这么重要

    这次部署里挂载了:

    /var/run/docker.sock

    所以Portainer不是只能“看”容器。

    它可以通过Docker API继续执行高权限操作。

    例如:

    • 启动;
    • 停止;
    • 重启;
    • 查看配置;
    • 操作Docker资源。

    这也是Portainer好用的原因之一,同时也是它不能随便公开的原因。


    12.实际查看本地容器

    页面:

    image-20251226152759270

    这里已经能看到极空间里正在运行的本地服务。

    相比每次执行docker ps,Web界面更适合快速浏览:

    • 容器名称;
    • 当前状态;
    • 对应操作入口。

    13.实际测试容器启停

    页面:

    image-20251226152819847

    这一步证明的是:

    Portainer → Docker Socket → 本地容器

    操作链已经跑通。

    所以这篇可以明确写:

    容器启停已经实测。


    14.继续查看容器详情

    进入具体容器:

    image-20251226153114878

    继续查看:

    image-20251226153126289

    页面:

    image-20251226153512404

    这一层更适合在排查问题时使用。

    当你已经知道“哪个容器有问题”,再从详情页继续看状态和配置,比在一堆容器之间反复切换更直观。


    15.Portainer不是让Docker命令失去意义

    图形界面适合:

    • 快速巡检;
    • 容器启停;
    • 看状态;
    • 找服务;
    • 进入详情。

    但复杂场景仍然可能需要回到命令行,例如:

    • 批量脚本;
    • Compose自动化;
    • CI/CD;
    • 精细日志处理;
    • 故障恢复;
    • 特殊网络排查。

    所以更准确的定位是:

    Portainer降低常见Docker运维的操作成本。

    而不是:

    从此不需要CLI。


    16.本地管理到这里已经跑通

    现在已经完成:

    极空间

    ↓

    Docker

    ↓

    Portainer

    ↓

    9000

    ↓

    管理员账号

    ↓

    local环境

    ↓

    容器列表

    ↓

    容器启停

    ↓

    容器详情

    如果只在家里局域网管理Docker,到这里已经可以使用。


    17.公网开放Portainer比开放普通Web服务更敏感

    Portainer背后连接的是宿主机:

    docker.sock

    也就是说,一旦有人拿到Portainer高权限账号,就可能进一步操作本机Docker环境。

    所以公网访问时不能只看:

    “9000能不能打开。”

    还要同时考虑:

    • Portainer管理员密码;
    • Docker Socket权限;
    • 公网地址传播范围;
    • 是否需要长期开放;
    • NAS里还有哪些敏感容器。

    18.安装cpolar

    执行:

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

    结果:

    e464b045413a024674a93ea472511b0f

    安装完成以后检查服务状态:

    sudo systemctl status cpolar

    结果:

    aa03713b56d9eef12a4da6b99d2e46ac

    确认cpolar正常运行以后,再进入Web管理页面。


    19.打开cpolar Web UI

    浏览器访问:

    极空间IP:9200

    页面:

    3af79ad708cc47c5bbea0b63c2c7230d

    登录以后开始为Portainer创建隧道。


    20.给9000创建随机公网入口

    创建参数:

    • 隧道名称:Portainer
    • 协议:HTTP
    • 本地地址:9000
    • 域名类型:随机域名
    • 地区:China Top

    页面:

    image-20251226153623504

    这里映射的是:

    Portainer Web管理页面9000端口。


    21.查看随机公网地址

    创建完成以后进入在线隧道列表:

    image-20251226154031051

    从其他网络访问:

    image-20251226154051983

    能够正常打开以后,可以确认:

    外部浏览器 → 公网地址 → Portainer:9000

    已经跑通。


    22.随机地址更适合先验证

    随机公网地址更适合:

    • 临时远程运维;
    • 先确认链路;
    • 偶尔查看。

    如果准备长期收藏这个入口,再继续配置固定二级子域名。


    23.保留固定二级子域名

    进入预留页面:

    image-20250918151358733

    本次示例名称:

    porr

    结果:

    image-20251226154229559

    实际使用时,以自己账号最终成功保留的名称为准。


    24.编辑Portainer隧道

    回到隧道列表:

    image-20251226154555910

    修改:

    • 域名类型:二级子域名;
    • Sub Domain:已经保留的名称;
    • 地区:China Top。

    更新:

    image-20251226154622456


    25.查看固定地址

    进入在线隧道列表:

    image-20251226154646408

    可以看到随机地址已经切换成固定二级子域名形式。


    26.最后从外部设备访问

    使用固定地址:

    image-20251226154733704

    能够正常进入以后,长期远程入口完成。

    整条链现在变成:

    外部浏览器 → 固定公网地址 → Portainer:9000 → Docker Socket → 本机Docker


    27.固定地址解决的是“入口稳定”

    固定二级子域名主要解决:

    • 浏览器长期收藏;
    • 外出时不用重新找随机地址;
    • 多设备使用同一个Portainer入口。

    它解决的是:

    访问入口不频繁变化。

    并不代表:

    • Portainer账号自动安全;
    • Docker Socket风险消失;
    • NAS所有容器都适合远程操作;
    • 地址可以公开分享;
    • Docker管理变成零风险。

    28.这篇真正验证了哪些能力

    已经实际跑通:

    • SSH登录极空间;
    • Docker环境检查;
    • Portainer容器部署;
    • 9000本地访问;
    • 管理员初始化;
    • Portainer重启;
    • local环境识别;
    • 本地容器展示;
    • 容器启停;
    • 容器详情;
    • 随机公网访问;
    • 固定公网入口。

    没有在这组步骤里完整验证:

    • 镜像构建;
    • 网络创建;
    • Volume管理;
    • Swarm集群;
    • 多主机环境;
    • 团队权限体系。

    这些能力如果后面需要,可以再单独做实操。


    29.这套方案更适合什么场景

    比较适合:

    • NAS里Docker服务越来越多;
    • 经常需要查看容器状态;
    • 不想每次都记容器名;
    • 需要快速启停服务;
    • 想用浏览器查看Docker环境;
    • 需要偶尔从外部网络管理。

    如果只有一两个容器,而且长期稳定运行,命令行已经够用。

    Portainer真正体现价值,通常是在:

    容器数量增加以后。


    30.最后把完整技术链重新看一遍

    基础环境:

    极空间 → SSH → Docker

    Portainer:

    docker run → 9000

    高权限连接:

    /var/run/docker.sock

    数据:

    portainer_data:/data

    本地管理:

    管理员 → local → 容器列表 → 启停 → 详情

    随机远程:

    公网随机地址 → 9000

    固定远程:

    固定二级子域名 → 9000

    实际完成:

    • SSH;
    • Docker检查;
    • Portainer安装;
    • Docker Socket挂载;
    • 数据卷;
    • 9000访问;
    • 管理员账号;
    • 容器重启;
    • local环境;
    • 容器列表;
    • 容器启停;
    • 容器详情;
    • cpolar安装;
    • 随机公网访问;
    • 固定二级子域名;
    • 外部设备访问。

    这样Portainer才真正从“一个Docker图形界面”,变成一套可以长期查看和操作极空间本地容器、并支持远程访问的Web管理入口。


    总结

    这次真正跑通的是一条完整的Portainer管理链:先通过SSH进入极空间并确认Docker环境,再用docker run启动Portainer,把9000端口、portainer_data数据卷和宿主机Docker Socket一起配置好。

    本地验证没有停在“登录页能打开”。后面继续完成管理员初始化、进入local环境、查看本地容器列表,并实际测试容器启停和状态详情。这样才能确认Portainer已经真正获得本机Docker管理能力,而不是单纯提供一个Web页面。

    需要特别注意的是,/var/run/docker.sock带来的权限很高。正因为Portainer可以通过它直接操作Docker,公网开放时就不能把它当普通网站处理;管理员密码、公网地址传播范围以及哪些人可以进入管理页面,都应该比“访问是否方便”更优先。

    远程部分是在本地容器管理已经正常以后再增加的能力。随机公网地址先验证9000链路,固定二级子域名再解决长期入口变化的问题;固定地址只是让Portainer入口更稳定,不代表Docker Socket、管理员账号和NAS上的其他容器自动获得额外安全保护。

    🚀真正的勇者不是流泪的人,而是含泪奔跑的人!


    敬请期待下一篇文章内容


    每日心灵鸡汤: 守住内心的光亮,积极面对生活!

    如何在生活中保持积极的心态?遇到烦心事不钻牛角尖,学会及时疏导负面情绪,不任由烦恼不断发酵.接纳生活与学习里的不完美,明白挫折本就是成长路上的常态.多留意身边微小的美好,把每一次小小的进步都当作值得肯定的收获.遇到困难先想解决办法,而不是一味陷入焦虑和自我怀疑.少和他人盲目攀比,专注走好属于自己的成长道路.累的时候适当休息调整,养足精神再继续前行.守住内心的光亮,积极的心态便能长久相伴.

    赞(0)
    未经允许不得转载:171主机测评 » 极空间部署Portainer实战:Docker Socket、9000端口、容器管理与固定地址访问
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址