Docker端口映射查看工具Dockpeek

简介

什么是 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 更快捷

bash 复制代码
# 运行容器
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.sockDocker 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 文件

yaml 复制代码
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

然后执行下面的命令

bash 复制代码
# 新建文件夹 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 ,并新增一行:

json 复制代码
"hosts" : [ "tcp://192.168.0.199:2375", "unix:///var/run/docker.sock" ],

其中的 IP 需要改成群晖主机的 IP 地址,然后用保存。接下来重启群晖的 docker 服务:

bash 复制代码
# 重启 docker 套件
synoservice --restart pkgctl-Docker

docker-compose.yml

yaml 复制代码
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

相关推荐
挨踢攻城43 分钟前
华为 | SD-WAN场景丢包类问题定位
网络·华为·php·hcie·hcia·hcip·厦门微思网络
Jewel Q2 小时前
AAA服务器技术
网络
Johny_Zhao10 小时前
基于 Docker 的 LLaMA-Factory 全流程部署指南
linux·网络·网络安全·信息安全·kubernetes·云计算·containerd·yum源·系统运维·llama-factory
岚天start13 小时前
Linux系统网络排查工具总结
linux·运维·网络·监控·扫描·连通性·流量
王燕龙(大卫)14 小时前
tcp会无限次重传吗
网络·tcp/ip
weisian15114 小时前
HTTP协议-3-HTTP/2是如何维持长连接的?
网络·网络协议·http
三年呀16 小时前
标题:移动端安全加固:发散创新,筑牢安全防线引言:随着移动互联网
网络·python·安全
x.Jessica16 小时前
网络的构成元素
网络·学习·计算机网络
tan77º17 小时前
【项目】分布式Json-RPC框架 - 项目介绍与前置知识准备
linux·网络·分布式·网络协议·tcp/ip·rpc·json
__lll_17 小时前
手把手教你用 Docker 部署 Vue 项目(含国内镜像加速 + 踩坑指南)
docker