简介
什么是 Dockpeek ?
Dockpeek
是一个轻量级的Docker
容器端口映射仪表盘,主要用于即时查看Docker
容器的端口映射情况。它支持管理多个Docker
套接字(Docker sockets
),可以一键打开暴露的端口,方便访问和管理容器化应用。
主要特点
- 端口映射展示:提供可点击的主机到容器端口链接,方便快速访问对应的
Web
应用。 - 多 Docker 套接字支持:能够集中管理多个
Docker
主机的套接字。 - 安全设计:通过认证和
socket-proxy
实现对Docker API
的只读安全访问。 - 便捷搜索:支持按容器名称或外部端口快速查找容器。
- 数据导出:可以将容器和端口详情导出为
JSON
格式。 - 用户友好界面:界面简洁,支持持久化暗黑模式。
应用场景
- 复杂的 Docker 环境:在多
Docker
主机或大量容器的复杂环境中,帮助用户集中、直观地查看和管理所有容器的端口映射,解决了追踪应用端口使用的难题。 - 开发和测试: 适合需要快速访问多个容器服务的开发、测试和运维场景。
- 运维管理:通过安全认证和只读访问,适合对安全性有要求的生产环境。
总结来说,Dockpeek
是一个方便、集中且安全的 Docker
端口映射查看工具,提升了多主机多容器环境下的管理效率和使用体验
安装
在群晖上以 Docker 方式安装。
本文写作时,
latest
版本对应为v1.1
;
单主机模式
如果你熟悉命令行,可能用 docker cli
更快捷
# 运行容器
docker run -d \
--restart unless-stopped \
--name dockpeek \
-p 8644:8000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-e SECRET_KEY=my_secret_key \
-e USERNAME=admin \
-e PASSWORD=admin \
ghcr.io/dockpeek/dockpeek:latest
/var/run/docker.sock
/var/run/docker.sock
是Docker API
的主要入口,简单地说,它是Docker
守护进程(Docker daemon
)默认监听的Unix
域套接字(Unix domain socket
),容器中的进程可以通过它与Docker
守护进程进行通信。
图片来自:https://betterprogramming.pub/about-var-run-docker-sock-3bfd276e12fd
环境
可变 | 值 |
---|---|
SECRET_KEY |
用于加密会话数据和 cookie 的强密码 |
USERNAME |
用于登录 Dockpeek 仪表板的用户名 |
PASSWORD |
与用户名关联的密码 |
DOCKER_HOST_N_URL |
定义额外 Docker 主机的 UR |
DOCKER_HOST_N_NAME |
显示在用户界面中的友好名称,关联到相应的 Docker 主机 URL |
DOCKER_HOST_N_PUBLIC_HOSTNAME |
用于生成可点击的容器链接的公共主机名或 IP 。如果未设置,则从主机 URL 推断 |
其中
N
为数字,可以参考多主机模式的示例;
也可以用 docker-compose
安装,将下面的内容保存为 docker-compose.yml
文件
services:
dockpeek:
image: ghcr.io/dockpeek/dockpeek:latest
container_name: dockpeek
restart: unless-stopped
ports:
- "8644:8000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- SECRET_KEY=my_secret_key # Set secret key
- USERNAME=admin # Change default username
- PASSWORD=admin # Change default password
然后执行下面的命令
# 新建文件夹 dockpeek
mkdir -p /volume1/docker/dockpeek
# 进入 dockpeek 目录
cd /volume1/docker/dockpeek
# 将 docker-compose.yml 放入当前目录
# 一键启动
docker-compose up -d
多主机模式
准备
首先我们需要让群晖的 docker
服务允许通过 TCP
进行连接,用 SSH
连到群晖上,编辑文件 /var/packages/Docker/etc/dockerd.json
,并新增一行:
"hosts" : [ "tcp://192.168.0.199:2375", "unix:///var/run/docker.sock" ],
其中的 IP
需要改成群晖主机的 IP
地址,然后用保存。接下来重启群晖的 docker
服务:
# 重启 docker 套件
synoservice --restart pkgctl-Docker
docker-compose.yml
services:
dockpeek:
image: ghcr.io/dockpeek/dockpeek:latest
container_name: dockpeek
restart: unless-stopped
ports:
- "8644:8000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- SECRET_KEY=my_secret_key # Set secret key
- USERNAME=admin # Change default username
- PASSWORD=admin # Change default password
# Docker Host 1
- DOCKER_HOST_1_URL=unix:///var/run/docker.sock # Required for DOCKER_HOST_N: URL of the additional Docker host.
- DOCKER_HOST_1_NAME=ds3617xs # Required for DOCKER_HOST_N: Display name shown in the UI.
- DOCKER_HOST_1_PUBLIC_HOSTNAME= # Optional: Public hostname or IP for clickable links. If empty, inferred from the URL.
# Docker Host 2
- DOCKER_HOST_2_URL=tcp://192.168.0.199:2375 # Required for DOCKER_HOST_N: URL of the additional Docker proxy.
- DOCKER_HOST_2_NAME=ds918 # Required for DOCKER_HOST_N: Display name shown in the UI.
- DOCKER_HOST_2_PUBLIC_HOSTNAME= # Optional: Public hostname or IP for clickable links. If empty, inferred from the URL.
# Example: Use device name like 'NAS' for easier access via Tailscale.
运行
在浏览器中输入 http://群晖IP:8644
就能看到登录界面
登录后的主界面,点端口可以直接打开应用的界面
如果是多主模式,则会多显示一列 Server
可以搜索端口
能很容易找到空闲的端口,对老苏这种没事就瞎折腾的人来说,省了很多事
参考文档
dockpeek/dockpeek
地址:https://github.com/dockpeek/dockpeek