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

相关推荐
大鹏说大话3 小时前
SSL证书自动化的未来:ACME协议与Let’s Encrypt实践
网络·安全
被摘下的星星4 小时前
网际协议(IP协议)
网络·tcp/ip
爱学习的小囧5 小时前
ESXi VMkernel 端口 MTU 最佳设置详解
运维·服务器·网络·php·虚拟化
eRTE XFUN5 小时前
docker 安装 mysql
mysql·adb·docker
eEKI DAND7 小时前
对Docker部署的MySQL中的数据进行备份恢复
mysql·docker·容器
东北甜妹7 小时前
Docker 瘦身
阿里云·docker·eureka
TechubNews7 小时前
Base 发布首个独立 OP Stack 框架的网络升级 Azul,将是 L2 自主迭代的开端?
大数据·网络·人工智能·区块链·能源
旷世奇才李先生8 小时前
Docker实战:容器化部署与Docker Compose集群管理(附企业级案例)
spring cloud·docker·eureka
多年小白8 小时前
中科院 Ouroboros 晶圆级存算一体芯片深度解析
大数据·网络·人工智能·科技·ai
发光小北8 小时前
IEC104 转 Modbus TCP 网关如何应用?
网络·网络协议·tcp/ip