如果你在使用 Docker,一定遇到过这种场景:部署了好几个容器,想访问某个不是太常用的服务,却要 docker ps或打开控制台,翻翻端口映射,甚至还要记住容器在哪台机器上。
对于开发者、运维,或者爱折腾的玩家来说,这简直是日常的痛点。好消息是,有一个轻量、零配置、实用的工具能帮你解决这个问题,它就是 —— Dockpeek。
像我这台TS-464C的测试机,部署Docekr久不久就来次失败,一看日志大多是端口用掉了。
Dockpeek
这是一款简单轻量的 Docker 端口显示工具,除了列出所有项目占用外,还支持搜索框直接搜,更主要的是他支持接入多主机。跟lsof -i :<ports>说再见~
大概的展示如下所示。
主要特点:
端口映射概览——快速查看所有正在运行的容器及其暴露的端口。
点击访问 URL – 只需单击即可立即打开容器化的 Web 应用程序。
多主机支持——在一个仪表板内管理多个 Docker 主机和套接字。
零配置——自动检测正在运行的容器,无需设置。
部署流程
先行操作
这部分是针对多设备用户,要在你的2,3,4等设备上进行操作。
需要在子设备上,打开 /etc/docker/daemon.json 文件,添加额外配置:
{
"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
}
0.0.0.0表示监听所有,可替换对应设备的具体IP地址。2375 是 Docker 官方默认设定的远程访问端口。
/var/run/docker.sock 是一个 Unix 域套接字(Unix domain socket) 文件,用于本地进程之间通信。它是 Docker 守护进程(dockerd)提供的默认 API 接口,允许客户端(比如 docker 命令行)与守护进程通信。
开始部署
使用威联通NAS作为部署平台,以Docker Compose的方式进行部署。多设备用户先别急复制代码部署,还有额外的操作需要执行。
直接本机监控,代码如下:
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
多主机,变量解释见下文:
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
使用socket-proxy(推荐用于远程或多主机设置):
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 # 主 Docker 套接字的 URL,如果省略,则默认为本地套接字。建议与本地代理一起使用
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
添加其他主机:
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 即可访问服务。初始面板如下。
确实是极简,默认显示所有设备端口。顶部有做设备区分。项目名/所属设备、端口/转发端口及协议、镜像名、容器状态都罗列的很清楚。
可通过搜索框进行搜索,响应很灵敏。
点击蓝色的端口,可直接打开服务。这里要说明的是,想要实现该效果需要我们填写环境变量DOCKER_HOST_N_PUBLIC_HOSTNAME的变量,按需求填写局域网IP、公网IP或是解析好的域名。
对于搜索出的结果,点击右上角的「Export」可直接导出配置文件。
总结
简单直白易用,支持多设备接入,个人认为是比较不错的项目。
感谢观看,本文完~
更多游戏资讯请关注:电玩帮游戏资讯专区
电玩帮图文攻略 www.vgover.com