别用excel了,NAS、docker端口轻松管理,极空间部署「dpv」
还在为记不住docker 容器端口而烦恼?
前端时间,我利用Trae的写过一款针对 NAS Docker 的端口管理工具「DockerPorts」,支持UDP/TCP,NAS/Docker端口自动识别、展示,支持自定义端口服务、类型,锁定端口展示范围等。旨在释放 NAS 用户的端口管理精力,并且帮助大家做好端口分配。

然后就顺带研究了一下其它的端口管理工具,突然发现一款自动发现容器端口,还内嵌浏览器,可直接打开WebUI的工具——Docker Port Viewer,体验了一下还挺有趣的,于是拿来做一个分享。

一、DPV 部署和使用
整个项目部署相当简单,使用了两个服务,分别是docker-socket-proxy(docker api)和docker-port-viewer(主程序)。
打开极空间docker应用,选择Compose——新建项目,填入我们的项目名称,然后将下面提供的yaml代码复制进去,创建即可。

🔻yaml代码,无需修改
services:
docker-socket:
image: tecnativa/docker-socket-proxy
container_name: docker-socket-proxy
environment:
- CONTAINERS=1
- POST=0
- PUT=0
- DELETE=0
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
docker-port-viewer:
image: hollowpnt/docker-port-viewer:latest
container_name: docker-port-viewer
ports:
# 3003 可自定义修改
- "3003:80"
整个系统界面,分为地址栏、检索栏、容器列表、内置浏览器四块。
1️⃣地址栏:用于内置浏览器打开WebUI的基础IP/域名,必须修改为局域网IP或者域名。
2️⃣检索栏:根据名字搜索容器,或者按照规则排序。
3️⃣容器列表:展示所有容器,并展示正在运行的,非Host/Macvlan网络的端口信息。
4️⃣内置浏览器:根据地址栏的基础IP/域名,直接打开容器的WebUI。

具体看具体的一个容器,从上往下分别是容器名字、镜像、状态、开始日期。下方则展示了可达网络(192.168.0.110)、端口(8650),容器内部端口(80)。

点击蓝色的URL,右侧的内置浏览器就可以打开这个容器的 WebUI,十分方便。

差点忘了,如果想体验我开发的DockerPorts项目,可以使用如下的yaml文件,部署方法也是一样的。
version: '3.8'
services:
dockports:
image: ghcr.io/coracoo/dockports:latest
container_name: host-dockports
network_mode: host
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /极空间路径:/app/config
environment:
# 可修改此端口以避免冲突
- DOCKPORTS_PORT=7578
restart: unless-stopped
和docker port viewer比起来,dockports的第一个优势就在于后者集成了NAS的端口管理,可以区分 NAS 和 docker 的端口,让整个端口链更完整,并且支持 TCP / UDP 协议区分。
🔻卡片模式展示端口

🔻列表模式展示端口

第二个优势:对于host、macvlan网络下的容器服务,或者宿主机上的网络服务,一般来说docker是无法识别出来的,因此dockports支持对识别出来的端口进行自定义维护。
一种方式是点击未知服务下方的+号,来维护服务名称和服务类型,并且归并到对应的端口分类下。

另一种方法就是通过设置功能,手动编辑conf文件,来配置不同的端口对应的服务和类型。

第三个优势,就是dockports是针对端口分配进行了优化,我们可以锁定端口的展示范围,让我们将 docker 的服务端口集中在一定的范围之内,满足强迫症用户的核心需求。
最后,dockports则提供了一个隐藏功能,用于将我们不想展示的容器进行隐藏,方便我们更好地管理各种需要的端口。

二、极空间容器远程访问
当然,dockports的劣势也很明显,那就是不支持通过url直接访问 docker 的 webui。这也是我认为docker port viewer这个项目很有意思的地方。
在以往,大部分的 NAS 虽然提供了官方转发服务,但是往往仅针对 NAS 自身提供的服务,比如web 界面、套件/应用等,不支持用户自己创建的容器服务。
而用户自建的 docker webui,又是大部分 NAS 用户折腾的核心功能,这也导致了 公网IP 成为了NAS用户不可或缺的一个工具,也是《论公网 IP 重要性》的核心论点。
但是最近,以极空间为例的私有云,推出的多端 docker 容器远程访问功能(无需公网,官方转发)。打通了 docker 页面和远程访问应用之间的快捷交互,支持将 docker 容器服务作为桌面应用使用。
1️⃣ 任何有HTTP/HTTPS协议服务的容器,现在在容器前方都增加了一个远程访问的功能。

点击后,极空间客户端会单独使用一个窗口来打开这个容器的web服务。

这个功能,是基于极空间的【远程访问】应用扩展而来的。所以我们也可以直接在远程访问里配置具体的http/https协议,以及端口、ip。
注意,极空间所在局域网的 web 服务都可以打开,这意味着我们可以把极空间官方服务作为公网来使用了,通过极空间可以访问局域网内所有的web服务。

值得一提的还有,在配置远程访问的时候,我们如果选择了【发送快捷方式到桌面】。那么这些docker服务就变成了桌面应用,也可以上传自定义的ICON图标。

除了桌面客户端之外,手机端也支持对 docker快捷访问的管理,可以直接打开docker web页面。
个人认为这个功能是相当的实用,一个原因是公网IP不再必须了,通过极空间官方转发足以满足 docker玩耍需求,第二个就是身边没有电脑,也可以随时随地的操作和管理 docker 的 web 界面。

总结
有人就会问:既然极空间如此强大,本身就可以管理和远程访问docker,并且能使用远程访问来管理docker端口了。为什么还要部署docker port viewer来访问 docker 的 web 页面呢?
这是因为 docker 功能只允许管理员使用,这个由 docker 本身的特性所决定的。因此遇到有团队、亲朋好友共同使用 NAS docker 服务的需求时,就可以通过docker port viewer这类应用来实现快速访问,降低它们的学习和使用成本。
整体来说,极空间私有云以近期更新的 docker 官方转发访问功能,搭配各类 docker 端口管理和远程访问工具,既能满足无公网IP用户的外网访问需求,又能满足长期没有电脑却像使用docker 容器用户的需求,狂赞狂赞。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

我想去云游
校验提示文案
我想去云游
校验提示文案