如果你在使用 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