
PortNote 是一个专为管理和记录网络端口使用情况而设计的工具,帮助用户清晰、有序地掌握整个基础设施中的端口分布。通过其简洁直观的网页界面,用户可以轻松添加服务器和虚拟机,分配并文档化各服务所使用的端口,从而有效预防端口冲突问题。PortNote 由 CoreControl 的开发者打造,致力于为运维中常被忽视的端口管理提供结构化、清晰且可控的解决方案。
本次实践为个人测试环境,操作系统版本为Ubuntu 22.04.1。
hostname | IP地址 | 操作系统版本 | Docker版本 | 部署项目 |
|---|---|---|---|---|
jeven01 | 192.168.3.88 | Ubuntu 22.04.1 LTS | 27.1.1 | PortNote |
1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.在Docker环境下部署PortNote端口自动检测工具。
检查Docker服务是否正常运行,确保Docker正常运行。
root@jeven01:~# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2025-07-02 14:16:57 UTC; 21h ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 878 (dockerd)
Tasks: 28
Memory: 1.2G
CPU: 1min 50.356s
CGroup: /system.slice/docker.service
├─ 878 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock检查Docker版本
root@jeven01:~# docker -v
Docker version 27.1.1, build 6312585检查Docker compose版本,确保2.0以上版本。
root@jeven01:~# docker compose version
Docker Compose version v2.19.1拉取PortNote容器镜像,如下所示:
docker pull registry.cn-hangzhou.aliyuncs.com/jeson/postgres:17
docker pull registry.cn-hangzhou.aliyuncs.com/jeson/portnote-agent:latest
docker pull registry.cn-hangzhou.aliyuncs.com/jeson/portnote:latest
mkdir -p /data/portnote && cd /data/portnote在部署目录下,创建docker-compose.yaml文件。注意修
改LOGIN_USERNAME和LOGIN_PASSWORD值,此为PortNote的登录账号和密码。
vim docker-compose.yamlservices:
web:
image: registry.cn-hangzhou.aliyuncs.com/jeson/portnote:latest
ports:
- "3000:3000"
environment:
JWT_SECRET: 3sXtLm9kQaRbVn7c8qWxYp2e5rTmZu6hLvBnKjPw= # Replace with a secure random string
USER_SECRET: aFg0Gz7FqXtJpNcR9vLmWs2dThnPqYwBeKxVrMc= # Replace with a secure random string
LOGIN_USERNAME: admin # Replace with a username
LOGIN_PASSWORD: admin # Replace with a custom password
DATABASE_URL: "postgresql://postgres:postgres@db:5432/postgres"
depends_on:
db:
condition: service_started
agent:
image: registry.cn-hangzhou.aliyuncs.com/jeson/portnote-agent:latest
environment:
DATABASE_URL: "postgresql://postgres:postgres@db:5432/postgres"
depends_on:
db:
condition: service_started
db:
image: registry.cn-hangzhou.aliyuncs.com/jeson/postgres:17
restart: always
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:执行以下命令,创建PortNote容器。
docker compose up -d
检查PortNote容器运行状态,确保PortNote容器正常启动。
root@jeven01:/data/portnote# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ca21815924a5 registry.cn-hangzhou.aliyuncs.com/jeson/portnote:latest "docker-entrypoint.s…" 27 seconds ago Up 26 seconds 0.0.0.0:3000->3000/tcp, [::]:3000->3000/tcp portnote-web-1
dcc07ce0e1bc registry.cn-hangzhou.aliyuncs.com/jeson/portnote-agent:latest "./app" 27 seconds ago Up 26 seconds portnote-agent-1
d9b6370a5a6f registry.cn-hangzhou.aliyuncs.com/jeson/postgres:17 "docker-entrypoint.s…" 27 seconds ago Up 27 seconds 5432/tcp portnote-db-1检查PortNote容器运行日志,确保PortNote服务正常运行。
docker compose logs
浏览器地址:
http://<个人的服务器IP>:3000,访问PortNote的初始页。如果无法访问,请确保宿主机的防火墙已关闭或已放行相关端口,对于云服务器还需配置相应的安全组规则。

默认账号密码为我们在部署文件中自定义设置的,这里设置的为admin/admin。

点击
点 Generate random port图标按钮,即可生成当前还未使用的随机端口。


点击“+”图标选项,进行添加服务器。填写服务器的IP地址和描述信息,可参考如下设置:

添加服务器完毕后,点击旁边的扫描图标,进行自动扫描服务器上的所有在使用的端口。

扫描完毕后,点击“Refresh Data”选项,即可显示所有扫描出正在使用的端口。


通过本次使用 Docker 部署 PortNote 的实践,我们成功搭建了一个高效、可视化的端口管理工具,显著提升了基础设施中端口使用的透明度与可控性。整个部署过程简洁明了,借助 Docker 容器化技术实现了快速启动和隔离运行,保障了环境的一致性。PortNote 提供了清晰的 Web 界面,使用户能够轻松添加服务器信息并记录端口使用情况,有效避免了端口冲突问题。此次实战不仅展示了 Docker 在应用部署中的便捷性,也体现了 PortNote 作为一款轻量级端口管理工具在运维工作中的实用价值。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。