一个现代化的 Docker 容器端口监控和可视化工具,帮助你轻松管理 NAS 或服务器上的端口使用情况。
| 📦 源码仓库 | https://github.com/Orson-Yan/DockPorts |
| 🐳 Docker 镜像 | orsoman/dockports(由本仓库构建发布) |
本仓库 Orson-Yan/DockPorts 是
orsoman/dockports镜像的唯一构建来源,请以此仓库为准。 项目最初 Fork 自 coracoo/DockPorts,在其基础上大量重构与新增功能,感谢原作者的开源贡献。
0.0.0.0/::)/ 局域网(具体网卡)/ 仅本机(回环),一眼看清哪些端口真的对外开放,可按暴露面筛选pid:host + privileged,默认关闭,详见下文)http(s)://地址:端口,支持内网/外网地址切换创建 docker-compose.yml:
version: '3.8'
services:
dockports:
image: orsoman/dockports:latest
container_name: dockports
network_mode: host
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./config:/app/config
environment:
- DOCKPORTS_PORT=7577 # 可修改此端口以避免冲突
restart: unless-stopped
# —— 可选:在「宿主机」端口卡片上显示占用进程名(如 mihomo / ollama / xrdp)——
# 默认关闭。容器与宿主机的 PID 命名空间隔离,且需提权才能映射 socket->进程。
# 解开下面两行即可启用。⚠ 安全提示:privileged 容器近似拥有宿主机 root 权限,
# 攻击面明显增大,请仅在可信内网/自用环境开启。
# pid: host
# privileged: true
启动:
docker compose up -d
访问 http://你的IP:7577
docker run -d \
--name dockports \
--network host \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v "$(pwd)/config:/app/config" \
-e DOCKPORTS_PORT=7577 \
orsoman/dockports:latest
如需在宿主机端口卡片显示占用进程名,额外加
--pid host --privileged(安全提示见下文)。
| 主机路径 | 容器路径 | 说明 |
|---|---|---|
/var/run/docker.sock | /var/run/docker.sock | Docker API 访问(只读) |
./config | /app/config | 配置文件目录(持久化) |
network_mode: host为必须项,否则 psutil 无法读取主机端口。
| 变量名 | 默认值 | 说明 |
|---|---|---|
DOCKPORTS_PORT | 7577 | Web 界面端口 |
DOCKPORTS_HOST | 0.0.0.0 | Web 服务监听地址 |
DOCKPORTS_DEBUG | false | 启用调试模式(true / 1 / yes) |
DOCKPORTS_COOKIE_SECURE | false | 仅经 HTTPS 传输 session cookie,套 TLS 反代时设为 true |
配置优先级: 命令行参数 > 环境变量 > 默认值
# 自定义端口
docker run ... orsoman/dockports:latest --port 8080
# 启用调试模式
docker run ... orsoman/dockports:latest --debug
默认情况下,容器与宿主机的 PID 命名空间隔离,无法把端口映射到宿主机进程,故「宿主机」端口卡片不显示进程名。如需显示(如 mihomo / ollama / xrdp),在 docker-compose.yml 中解开两行:
pid: host
privileged: true
⚠️ 安全提示:
privileged容器近似拥有宿主机 root 权限,攻击面明显增大。请仅在可信内网/自用环境开启。不开启时该功能自动降级(进程名留空),其余功能不受影响。
| 架构 | 适用设备 |
|---|---|
linux/amd64 | x86_64(Intel / AMD 处理器) |
linux/arm64 | ARM64(绿联 / 极空间 / 飞牛 等 NAS) |
linux/arm/v7 | ARMv7(树莓派 3 等) |
/proc/net)GET /api/ports获取端口信息,支持查询参数:protocol(TCP/UDP)、start_port、end_port、search、reserved(1 时附带已停止容器声明的预留端口)
GET /api/refresh重连 Docker 客户端并刷新端口信息
| 方法 | 路径 | 说明 |
|---|---|---|
GET | /api/config | 获取解析后的端口→服务名配置 |
GET | /api/config/raw | 获取 config.json 原始内容(供设置界面编辑) |
POST | /api/config | 保存整份配置;或传 {port, service_name, service_type} 命名单个端口 |
GET/POST /api/settings获取或保存应用设置(内网/外网地址、鉴权开关、用户名密码)
| 方法 | 路径 | 说明 |
|---|---|---|
GET | /api/hidden-ports | 获取隐藏端口列表 |
POST | /api/hidden-ports | 隐藏单个端口 |
DELETE | /api/hidden-ports | 取消隐藏单个端口 |
POST | /api/hidden-ports/batch | 批量隐藏端口 |
DELETE | /api/hidden-ports/batch | 批量取消隐藏端口 |
端口扫描为空
→ 必须使用 --network host,psutil 才能读取宿主机 /proc/net
无法连接 Docker
→ 确认 /var/run/docker.sock 已正确挂载,且为只读(:ro)
端口冲突
→ 修改环境变量 DOCKPORTS_PORT=8080 改用其他端口
忘记登录密码
→ 编辑 config/settings.json,将 auth.enabled 改为 false 后重启容器
查看运行日志
docker logs -f dockports
min-width: 0,长服务名/进程名/容器名支持折行,避免长内容撑破整行网格orsoman/dockports 镜像的唯一构建来源settings.json 收紧为 0600 权限(含 secret_key 与密码哈希),并在启动时修正历史文件SameSite=Lax 与显式 HttpOnly;新增 DOCKPORTS_COOKIE_SECURE 环境变量(套 TLS 反代时开启 Secure)HostConfig.PortBindings),帮助规划时避开撞端口;若声明端口已被占用,则在占用卡上标注冲突来源pid:host + privileged,默认关闭并优雅降级):host 配置端口在「系统/容器」分类下消失的问题(source 归一化为 docker/system)container.image 触发 404 中断整个端口检测、导致容器端口显示不全的问题(改用 attrs 读取镜像名)DOCKPORTS_CONFIG_DIR 环境变量,便于本地开发覆盖配置目录.dockerignore,避免将 settings.json 等运行时文件打入镜像0.0.0.0 / ::)的 UDP 服务端口,过滤掉 DNS 查询、NTP 同步等客户端临时端口,避免大量无关 UDP 端口显示为占用config.json 读取与保存逻辑"服务名:docker/host": "端口:tcp/udp"--port、--host、--debug)MIT License
Content type
Image
Digest
sha256:cb9f04d8b…
Size
232.4 MB
Last updated
3 months ago
docker pull orsoman/dockports