Py学习  »  docker

玩Docker再也不怕端口冲突了!NAS必备的端口管理工具Portracker

Stark324 • 4 天前 • 35 次点击  

玩Docker再也不怕端口冲突了!NAS必备的端口管理工具Portracker

哈喽小伙伴们好,我是Stark-C~

十个NAS用户九个都会玩Docker,不过随着玩的Docker越来越多,麻烦也就来了:装个新容器,结果端口又冲突了,想排查问题,但又不知道这个端口是被那个服务占用。并且很多时候明明把容器删掉了,端口却依旧显示被占用,我想碰到这些问题的NASer绝对不只我一个~

今天就为大家分享一个专门解决NAS上端口问题的宝藏项目--Portracker。它可以把NAS中所有“系统端口 + Docker 端口”全部可视化展示出来,让我们非常直观的看到NAS中所有使用中的端口,从此以后,玩 Docker 再也不用担心端口冲突了。

关于Portracker

🔺Portracker是一个免费开源的自托管的实时端口监控和发现工具,它可以自动扫描我们NAS中所有的服务以及其占用的端口,并以可视化方式展示每个端口到底被谁占用、是否对外暴露、是否存在冲突。

简单来说,有了它,就能彻底解决我们NAS用户端口混乱、端口冲突、端口难排查的问题。

项目Github地址:https://github.com/mostafa-wahied/portracker

项目亮点特色:

  1. 自动发现所有端口(系统 + Docker):Portracker 会自动扫描宿主机与 Docker 容器,识别所有正在监听的端口、对应的服务、进程、容器名称等,无需手动录入。
  2. 深度支持 Docker 与 TrueNAS:它内置专门的采集器(collectors),能读取 Docker、TrueNAS 的上下文信息,例如容器内部端口、映射端口、容器名称、镜像等。
  3. 区分内部端口与对外暴露端口:Portracker 能清晰区分容器内部端口(internal)和宿主机映射端口(published),这个对于我们排查端口冲突非常有用。
  4. 多服务器统一管理:家里如果有多台服务器或者NAS的用户可以使用它统一管理,也就是说只需要它一个服务就能查看所有服务器的端口情况(当然其它服务器也需要安装Portracker)。
  5. 实时更新:端口变化、容器启动/停止、服务监听变化都会实时刷新,不需要手动刷新页面。
  6. 免费开源,现代界面:项目完全免费、可自托管、无广告、无追踪,并且提供了简洁的仪表盘,支持多种数据视图和主题模式。

Portracker部署

🔺本地部署我依然以威联通NAS为例,在Docker目录中(威联通默认的Docker目录为“Container")新建一个“portracker”的文件夹。

🔺然后打开威联通Container Station,选择“应用程序--创建”。

🔺在创建应用程序这里,应用程序名称随意,然后在方框内输入以下 Docker Compose 配置信息:

services:
  portracker:
    image: mostafawahied/portracker:latest
    container_name: portracker
    restart: unless-stopped
    pid: "host"
    read_only: true
    security_opt:
      - no-new-privileges:true
      -  apparmor:unconfined
    cap_add:
      - SYS_PTRACE
      - SYS_ADMIN
    cap_drop:
      - ALL
    volumes:
      - /share/Container/portracker:/data   # 冒号前面映射portracker文件本地路径
      - /var/run/docker.sock:/var/run/docker.sock:ro
    ports:
      - "4999:4999"   #项目打开端口,冒号前面请勿冲突
    environment:
      TZ: Asia/Shanghai
    healthcheck:
      test: ["CMD", "wget", "-qO-", "http://localhost:4999/api/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s

代码需要修改的地方我都用中文注释标注出来了,其它的直接保持默认即可。镜像的拉取需要自行解决网络问题,粘贴到自己的NAS这边之前建议使用AI工具优化一下,以防止格式问题造成的部署失败。完成之后记得点“验证”按钮,如果通过了就可以点右下角的“创建”按钮。

🔺项目部署好之后看到显示“正在运行”,就说明可以使用了。

Portracker体验

🔺打开项目容器的详细信息,复制一下它的“端口转发URL”(也就是“NAS IP:端口号”)。

🔺然后直接粘贴到浏览器地址栏并回车就可以直接打开项目页面了,项目目前默认只有英文显示,不过显示的内容其实不是很多,常和NAS打交道的应该很容易看明白。

🔺有中文强迫症的可以使用浏览器翻译插件,不过我觉得使用插件强制翻译之后看着更难受了,倒不如不用~

🔺默认显示的便是关于本机的端口,不过我们可以在这里更改本机显示的信息,点击后面的修改图标。

🔺设置下名称和项目地址,然后保存就可以了。

🔺设置之后貌似看着要顺眼一点~。可以看到它这里已经读取了我们NAS的系统信息,包括型号、使用的操作系统、CPU、内存、运行时间,以及当前运行的Docker容器数量。

🔺项目展示了NAS中所有Docker容器以及自身服务占用的端口,随便点击一个端口都能快捷打开该服务对应的本地 Web 界面,算是一个快捷打开方式。

🔺也可以更改这些Docker容器显示的样式,可以看到Docker容器和NAS自身服务显示的图标还是有些不同的,并且Docker容器还显示了总共运行的时间。

🔺另外我们还能对Docker服务进行重命名,相当于给它搞一个备注。

🔺我们如果在上边状态栏取消选择docker,只显示System,这下面展示的基本都是NAS本身系统级的服务以及所占用的端口了。

🔺另外我们想要知道某个端口是否被占用,直接在搜索框中输入这个端口,如果有占用它就会显示是那个服务占用了该端口,如果没有你就可以放心大胆的用。

🔺如果你想直接得到一个没被占用的端口,直接点“Generate port”,它就会立马为我们生成一个可用端口。

🔺如果需要添加另一台NAS上的端口监控直接点左下角的添加服务器即可添加。

最后

总的来说,今天的这个项目对于NAS用户,特别是没事喜欢折腾Docker的玩家来说还是非常实用的,因为它正好解决了大家折腾过程中端口冲突这种最常见的问题,有需要的可以试试~

好了,以上就是今天给大家分享的内容,我是爱分享的Stark-C,如果今天的内容对你有帮助请记得收藏,顺便点点关注,咱们下期再见!谢谢大家~


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/197948