在日常开发里,我经常遇到一个让人头大的场景:Docker 容器越来越多,但到底哪些端口已经被占用?哪些服务到底运行在哪?有时候明明一个服务启动失败,原因就是端口冲突,但排查起来却要反复用 docker ps
、ss
、netstat
去对比,既费时又费力。
最近我尝试了两款开源的小工具,专门用来做「Docker 端口可视化」,体验下来感觉非常好用,分享给大家:
-
Docker Port Viewer —— 功能全面的“端口看板”,支持搜索、排序和容器详情查看。
-
WhatsRunning —— 极简轻量,直接生成可点击的访问链接。
这两个工具各有侧重,如果你平时管理的容器比较多,可以一起部署,组合使用效果更佳。
工具一:Docker Port Viewer

功能亮点:
-
界面现代化,容器信息展示完整
-
可查看容器详情、状态、端口映射
-
支持搜索和排序,适合当“容器监控面板”
部署方式(docker-compose 示例):
services:
docker-port-viewer:
image: portainer/portainer-ce:latest
container_name: docker-port-viewer
restart: unless-stopped
ports:
- "9000:9000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
volumes:
portainer_data:
部署完成后,直接打开浏览器访问 http://localhost:9000
,就能看到一个直观的端口监控面板。
工具二:WhatsRunning
如果你不想要复杂的界面,只想知道“我现在到底有哪些端口占用了”,WhatsRunning 是一个非常轻量的选择。
功能亮点:
-
自动扫描所有已发布端口(尤其是 HTTP/HTTPS)
-
自动生成可点击的访问链接,方便直接跳转
-
镜像小,部署零配置,几乎即开即用
部署方式(docker-compose 示例):
services:
whatsrunning:
image: mikeage/whatsrunning:latest
container_name: whatsrunning
restart: unless-stopped
ports:
- "8080:5000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
启动后访问 http://localhost:8080
,就能直接看到所有被占用的端口以及对应的跳转链接。
注意事项
这类工具都是通过挂载 Docker Socket (/var/run/docker.sock
) 来读取容器信息的。 直接暴露 docker.sock
到外网存在严重风险,攻击者可能直接控制你的 Docker 引擎。
建议:
-
仅在 内网环境 部署使用,不要暴露到公网。
-
使用 docker-socket-proxy 来限制容器的访问权限,降低安全风险。
使用场景
-
开发者:排查端口冲突、快速定位服务运行情况。
-
运维:做容器端口的“可视化监控面板”,方便团队协作。
-
个人开发环境:只想快速确认哪些服务在跑、端口是什么。
体验总结
实际体验下来:
-
Docker Port Viewer 更像是一个“容器管理看板”,功能齐全,适合日常容器管理。
-
WhatsRunning 则极度轻量化,适合快速确认端口占用情况,尤其适合调试阶段。
如果再配合宿主机上的 ss -tulnp
或 netstat -tulnp
命令,就能把容器端口和宿主机端口的占用情况一网打尽。
我自己的做法是:
-
平时用 Docker Port Viewer 做全局监控;
-
碰到服务启动失败时,再用 WhatsRunning 快速排查端口冲突。
项目地址:
Docker Port Viewer:https://github.com/hollowpnt92/docker-port-viewer
WhatsRunning:https://github.com/mikeage/whatsrunning