跳至內容

Dive

Docker 映像檔分析神器

軟體分類 程式開發 / 容器工具
軟體標籤
開發廠商 Alex Goodman (wagoodman)
Stars
53.8k
Forks
2k
License
MIT
Version
v0.13.1
Update
2025-12-15
OS

產品說明

Dive 是一款專為開發者與 DevOps 工程師設計的命令列 (CLI) 工具,旨在解決 Docker 映像檔 (Image) 過於肥大且難以優化的痛點。透過直觀的終端機使用者介面 (TUI),Dive 能將映像檔「層層拆解」,讓使用者清楚看見每一層 (Layer) 增加了哪些檔案、修改了哪些內容,以及是否存在重複或無用的資料。

在容器化部署日益普及的今天,優化映像檔大小不僅能加快部署速度,還能減少傳輸流量與儲存成本。Dive 能自動計算映像檔的「效率分數 (Image Efficiency)」,並標示出潛在的浪費空間,是進行 Docker 瘦身 (Docker Slimming) 必不可少的分析利器。

核心特色:

  • 層級視覺化:左側顯示每一層的指令與大小,右側即時顯示該層對檔案系統的變更(新增、修改、刪除)。
  • 浪費空間分析:自動偵測並統計跨層重複或被覆蓋的檔案,量化顯示「浪費空間」的大小。
  • CI/CD 整合:支援在自動化流程中執行,可設定效率門檻(例如:效率低於 90% 則 Build 失敗),確保產出的映像檔品質。
  • 跨平台支援:雖為 CLI 工具,但完美支援 Windows、Mac 與 Linux,且安裝過程簡單。

常用指令與操作

Dive 的操作邏輯非常簡單,主要分為「分析現有映像檔」與「建置並分析」兩種場景。

基礎指令

  1. 分析映像檔:直接指定 Image ID 或 Tag 即可開始分析。
    dive <image-tag>
    # 例如:dive nginx:latest
    
  2. 建置並分析:取代傳統的 docker build 指令,在建置完成後直接進入分析介面。
    dive build -t <my-image-tag> .
    
  3. CI 模式執行:加上 --ci 參數即可在非互動模式下輸出分析報告(適合 Jenkins、GitLab CI 等環境)。
    dive <image-tag> --ci
    

介面快捷鍵 (Shortcuts)

進入 Dive 的互動介面後,你可以使用鍵盤快速切換視角與篩選資料:

按鍵功能說明適用情境
Tab切換面板 (Switch View)在左側 Layer 列表與右側檔案樹之間切換
Space展開/收合目錄 (Toggle Folder)檔案樹瀏覽
Ctrl + F檔案篩選 (Filter Files)快速搜尋特定檔名
Ctrl + L僅顯示當前層變化 (Layer Changes)右側只顯示該 Layer 的變動,而非完整檔案系統
Ctrl + A顯示聚合變化 (Aggregate Changes)右側顯示直到該層為止的所有檔案狀態
Ctrl + U取消篩選 (Unfilter)清除搜尋條件
Ctrl + C離開程式 (Quit)結束 Dive

進階技巧

  • 檢視檔案內容:雖然 Dive 主要用於檢視檔案結構,但透過整合習慣的編輯器,你也可以快速檢查設定檔內容是否正確寫入。
  • 效率指標 (Efficiency Score):介面左下角會顯示一個百分比分數。如果分數過低,建議檢查是否有大量暫存檔 (如 apt-get update 後未清理 /var/lib/apt/lists) 被遺留在中間層。

操作介面