Dockpeek:一键管理Docker多主机端口,告别繁琐查询
如果你在日常工作中频繁使用Docker,可能会对以下场景感到熟悉:服务器上部署了多个容器,当需要访问一个不太常用的服务时,不得不打开终端,输入 docker ps 命令仔细排查,或者在容器控制台中费力翻找端口映射信息,甚至还需要额外记住这个容器究竟运行在哪台宿主机上。
对于开发者、运维工程师以及热衷于技术探索的爱好者而言,这一过程无疑增加了日常管理的繁琐度。幸运的是,现在有一款轻量级、几乎无需任何配置且极其实用的工具能够高效地解决这个痛点,它就是 Dockpeek。

以我使用的这台TS-464C测试机为例,在运行Docker时时常会遇到部署失败的情况,查看日志后发现问题大多源于端口已被占用。
工具简介
Dockpeek 是一款设计简洁、资源占用极低的Docker端口可视化工具。它不仅能够清晰地列出所有项目占用的端口,还提供了一个便捷的搜索框以便快速筛选。更为重要的是,它原生支持接入并管理多个Docker主机。从此,你可以告别反复使用 lsof -i: 等命令进行端口查询的复杂操作。
其界面的大致展示效果如下所示。

核心特性
- 端口映射总览 —— 迅速掌握所有正在运行容器的状态及其对外暴露的端口信息。
- 点击直达服务 – 通过简单点击即可立即在浏览器中打开容器化的Web应用程序访问链接。
- 多主机统一管理—— 在单个仪表板内即可集中监控和管理多台Docker主机及其套接字连接。
- 开箱即用—— 工具启动后会自动检测运行中的容器,无需进行复杂的初始化设置。
详细部署指南
前期准备工作
此部分主要面向拥有多台Docker设备的用户,需要在您计划接入的第二、第三乃至第四台设备上进行如下配置。
需要在每台子设备上,编辑 /etc/docker/daemon.json 配置文件,添加以下内容以开启远程API访问:
{
"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
}
配置说明:0.0.0.0 表示监听所有网络接口,您也可以将其替换为该设备的特定局域网IP地址。2375 是Docker官方默认用于远程访问的通信端口。
补充知识:/var/run/docker.sock 是一个Unix域套接字文件,它负责本地进程间的通信。此文件是Docker守护进程(dockerd)提供的基础API接口,允许如 docker 命令行这样的客户端与守护进程进行交互。
正式部署步骤
本文以威联通NAS作为部署平台,采用Docker Compose方式安装Dockpeek。多主机用户请勿直接复制默认代码,后续有额外配置步骤。
1. 单机本地监控部署 适用于仅监控Dockpeek所在宿主机的情况,使用以下配置:
services:
dockpeek:
image: ghcr.io/dockpeek/dockpeek:latest
container_name: dockpeek
environment:
- SECRET_KEY=my_secret_key # 建议使用专用工具生成高强度密钥
- USERNAME=admin # 管理面板登录用户名,可自定义
- PASSWORD=admin # 管理面板登录密码,请务必修改
ports:
- "3420:8000" # 冒号左侧为宿主机访问端口,可按需修改
volumes:
- /var/run/docker.sock:/var/run/docker.sock
restart: unless-stopped
2. 多主机集中监控部署 此配置允许监控多个Docker主机,关键环境变量说明见下文注释:
services:
dockpeek:
image: ghcr.io/dockpeek/dockpeek:latest
container_name: dockpeek
ports:
- "3420:8000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
restart: unless-stopped
environment:
- SECRET_KEY=my_secret_key
- USERNAME=admin
- PASSWORD=admin
# Docker Host 1 (本地主机)
- DOCKER_HOST_1_URL=unix:///var/run/docker.sock
- DOCKER_HOST_1_NAME=TS-464C
- DOCKER_HOST_1_PUBLIC_HOSTNAME=NAS
# Docker Host 2 (远程主机)
- DOCKER_HOST_2_URL=tcp://192.168.50.20:2375
- DOCKER_HOST_2_NAME=TS-673A
- DOCKER_HOST_2_PUBLIC_HOSTNAME=NAS
3. 通过Socket-Proxy部署(推荐用于远程或需增强安全的场景) 此方案通过一个代理容器访问Docker套接字,通常更为安全:
services:
dockpeek:
image: ghcr.io/dockpeek/dockpeek:latest
container_name: dockpeek
environment:
- SECRET_KEY=my_secret_key
- USERNAME=admin
- PASSWORD=admin
- DOCKER_HOST=tcp://dockpeek-socket-proxy:2375 # 指向代理容器
ports:
- "3420:8000"
depends_on:
- dockpeek-socket-proxy
restart: unless-stopped
dockpeek-socket-proxy:
image: lscr.io/linuxserver/socket-proxy:latest
container_name: dockpeek-socket-proxy
environment:
- CONTAINERS=1
- IMAGES=1
- PING=1
- VERSION=1
- LOG_LEVEL=info
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
read_only: true
tmpfs:
- /run
ports:
- "2375:2375"
restart: unless-stopped
4. 在多主机配置中添加更多Docker主机 您可以遵循以下模式,通过递增数字编号来添加更多需要监控的主机:
environment:
- SECRET_KEY=my_secret_key
- USERNAME=admin
- PASSWORD=admin
# 可选:通过设置下列变量添加额外的 Docker 主机
# 每个主机都需要 DOCKER_HOST_N_URL、DOCKER_HOST_N_NAME 以及可选的 DOCKER_HOST_N_PUBLIC_HOSTNAME
# Docker Host 1
- DOCKER_HOST_1_URL=unix:///var/run/docker.sock # Docker 套接字 URL
- DOCKER_HOST_1_NAME=MyServer1 # 在用户界面中显示的名称
- DOCKER_HOST_1_PUBLIC_HOSTNAME= # 可选的公共主机名或IP;留空则从URL推断
# Docker Host 2
- DOCKER_HOST_2_URL=tcp://192.168.50.20:2375 # Docker 代理 URL
- DOCKER_HOST_2_NAME=TS-673A # 在用户界面中显示的名称
- DOCKER_HOST_2_PUBLIC_HOSTNAME=NAS # 可选的公共主机名或IP
# 通过增加数字编号(3、4 等)可继续添加更多 Docker 主机
功能界面与使用展示
部署完成后,在浏览器地址栏输入 你的NAS_IP:3420 即可访问Dockpeek管理面板。初始界面非常简洁明了。

界面设计遵循极简主义,默认会展示所有已接入设备的端口占用情况。顶部导航栏清晰地区分了不同主机设备。列表中详细列出了项目名称(及其所属设备)、容器端口/宿主机转发端口及协议类型、使用的镜像名称以及当前容器的运行状态。

通过顶部的搜索框,您可以快速过滤查找特定的容器或服务,系统的响应速度非常灵敏。

点击列表中蓝色的端口号,可以直接在浏览器新标签页中打开对应的服务。需要注意的是,要实现此一键跳转功能,必须在部署时正确设置环境变量 DOCKER_HOST_N_PUBLIC_HOSTNAME。您可以根据实际访问需求,在此填写局域网的IP地址、公网IP或者已解析好的域名。

对于搜索或筛选后的结果列表,点击右上角的「Export」按钮,可以直接导出相关的配置文件,便于备份或迁移。

总结
Dockpeek 以其直观的界面、简单的部署流程和对多Docker主机的原生支持,有效解决了容器端口管理和服务快速访问的难题。对于需要在多台设备上维护Docker服务的用户而言,它是一款值得尝试的高效辅助工具。