PassNAT LogoPassNAT

Portainer容器管理面板部署指南,飞牛NAS用Docker搭建可视化面板,配内网穿透在外面也能管容器

作者

小编

发布时间

Curving abstract shapes with an orange and blue gradient

项目介绍

Portainer 是一个开源的 Docker 可视化管理面板。装上之后,这台机器上所有的容器、镜像、数据卷、网络都摆在网页里:启动、停止、重建、看实时日志、看 CPU 和内存占用,点几下就完事,不用再连上去敲命令。

它还能直接看 Compose 项目(在 Portainer 里叫 Stacks)、在线改编排重新部署、给容器开一个网页终端。社区版功能完整,个人和家用 NAS 足够了。面板本身也只是一个容器,装它不用改动已经在跑的任何东西。

项目地址:点我跳转

部署安装

装在自己的 NAS 上之后,这个面板只在家里的网里能打开 —— 而「哪个容器挂了、顺手重启一下」这种事,偏偏最常发生在你不在家的时候。我家是移动宽带,没有公网 IP,所以用 帕斯内网穿透 把它开放到公网,飞牛的应用中心里就能直接装到插件,不用另外找工具。下面这套流程在飞牛 NAS 上从头到尾走一遍。

第一步:准备编排文件

下面这份编排要认四处。

1services:
2 portainer:
3 image: portainer/portainer-ce:lts
4 container_name: portainer
5 command: --http-enabled
6 ports:
7 - "9000:9000"
8 volumes:
9 - /var/run/docker.sock:/var/run/docker.sock
10 - ./data:/data
11 restart: unless-stopped

image: portainer/portainer-ce:lts —— 官方镜像。lts 就是官方安装文档里给的写法,长期支持版,小版本更新会自己跟上,不用改编排。

command: --http-enabled —— 让面板走普通的 http。官方文档的示例发布的是 9443 端口、走 https,但用的是它自己签的证书,浏览器打开会先弹一页「连接不是私密连接」的警告。加上这一行改用 9000 端口的 http,配合内网穿透用起来更顺。(官方示例里还有一个 8000 端口,那是 Edge 代理用的,只管本机的话不用发布。)

ports: "9000:9000" —— 左边是宿主机端口,也就是浏览器要敲的那个,建隧道时也填它;右边是容器内端口,别动。9000 被别的服务占了就改左边,比如 "9100:9000"。

volumes 里的 /var/run/docker.sock —— 把宿主机的 Docker 接口挂进容器,Portainer 靠它才看得见、管得了别的容器,这一行是这个项目的核心,不能省。下面的 ./data:/data 是它自己的配置和账号数据,放在项目目录里,容器重建也不会丢。

第二步:在飞牛上建 Compose 项目

先开飞牛的 Docker 这个应用,切到上面的 Compose 标签,点右上角的新增项目。项目名字就填 portainer,跟容器名对上好认。

路径这一栏点开,挑一个空文件夹,选中它,点确认。编排和数据以后都放在这个目录里,容器重建也不会丢。

来源选「创建 docker-compose.yml」,把上面那段整段贴进来,勾上「创建项目后立即启动」,点创建。镜像四十多兆,拉完就跑起来了,端口是 9000。

第三步:容器起来先别急着打开,先去日志里取一串 token

这一步和别的项目不太一样,先说清楚,不然容易卡住。

Portainer 第一次打开要你建管理员,除了用户名和密码(密码至少 12 位),下面还有一栏 Setup token。这一栏不填,「Create user」按钮一直是灰的 —— 而页面上同时挂着一句密码长度的提示,很容易以为是密码不够长,其实是 token 没填。

token 在容器的运行日志里。在飞牛上这么看:打开 Docker 应用,切到「容器」,在搜索框里搜 portainer,点这一行最右边的三个点,选「运行日志」。日志里有一行 setup_token=,后面那串就是,复制下来备用。

⚠ 还有一个 5 分钟的时间限制:容器启动之后 5 分钟内没把管理员建好,Portainer 会把初始化入口锁上,页面变成一句超时提示。这是它防止别人抢先占用的机制。锁上了也不要紧,把容器重启一下就会重新开始计时,日志里也会打出一串新的 setup_token(每次启动都会换一串,用最新的那串)。

所以顺序是:容器起来 → 先把 token 复制好 → 再去建隧道拿公网地址 → 用公网地址打开,一次把管理员建完。这样 5 分钟够用。

第四步:用内网穿透开放到公网

打开 PassNAT 插件,点创建隧道:名字随便起;传输协议选 TCP;本地 IP 这一栏留默认的 127.0.0.1 就行,插件本来就跑在 NAS 上;本地端口填上面那个 9000。

点开这条隧道的详情,最左边那个电源键按一下,等它转成运行中,隧道就通了。面板上那一行就是系统分给你的公网地址 —— 先记下来,建管理员、以及以后人在外面打开这个面板,用的都是它。

第五步:在公网地址上把管理员建好

用公网地址打开,填个用户名,口令至少十二位,再把刚才日志里那串 token 贴进来,点 Create user。隧道开了就赶紧把管理员建好,超过五分钟它会锁上,重启一下容器再来就行。

建完会有一页 Set up Edge Compute,用不到的话点 Skip 跳过,然后在环境列表里点 local 进去,就是这台机器的总览了。

怎么用

进去就是总览:多少个容器在跑、多少个镜像、占了多少空间,一眼看完。

左边侧栏几个常用的:Containers 是容器列表,右上角有搜索框,容器多的时候搜一下就定位到了;点进某个容器,Logs 看实时日志,Stats 看 CPU 和内存曲线,Console 直接开一个网页终端,不用再连上去敲命令。Stacks 是 Compose 项目,编排可以在线改了重新部署。

配合内网穿透之后,人不在家也能打开这一页,看看哪个容器挂了、顺手重启一下。

一些使用上的细节

⚠ 挂了 docker.sock 就等于把这台机器上 Docker 的完整控制权交给了这个面板。所以管理员密码要设长一点,也别把面板地址随手发给别人;不用的时候可以去 PassNAT 插件里把那条隧道的电源关掉,内网照常用。

面板里能看到这台机器上所有的容器,包括不是用 Portainer 建的那些 —— 停止和删除都是真的会生效,操作前先看清楚是哪一个。

配置和账号数据存在项目目录的 data 文件夹里,容器重启不会丢;想搬到另一台机器,把这个目录拷过去就行。