極簡或 Distroless 映像檔

極簡映像檔(有時稱為 Distroless 映像檔)是移除了套件管理器、Shell 甚至底層作業系統發行版等不必要元件的容器映像檔。Docker 硬化映像檔 (DHI) 採用這種極簡方式來減少漏洞並確保軟體交付的安全性。Docker 官方映像檔Docker 認證發行商映像檔也遵循類似的極簡與安全性最佳實踐,但為了確保能相容於更廣泛的使用案例,它們可能不會像 Distroless 映像檔那樣精簡。

什麼是極簡或 Distroless 映像檔?

傳統的容器映像檔包含完整的作業系統,通常遠超過執行應用程式所需。相比之下,極簡或 Distroless 映像檔僅包含:

  • 應用程式二進位檔
  • 執行階段相依性(例如 libc、Java、Python)
  • 任何明確需要的設定或元資料

它們通常排除以下內容:

  • 作業系統工具(例如 lspscat
  • Shell(例如 shbash
  • 套件管理器(例如 aptapk
  • 除錯工具(例如 curlwgetstrace

Docker 硬化映像檔正是基於此模型,確保執行環境的受攻擊面更小、更安全。

你能獲得什麼

優點描述
更小的受攻擊面元件越少,代表漏洞越少,且暴露於 CVE 的風險也越低
更快的啟動速度較小的映像檔大小可加快拉取與啟動時間
改善安全性缺少 Shell 和套件管理器,限制了攻擊者在入侵後的活動能力
更好的合規性更容易審核與驗證,特別是在結合軟體物料清單 (SBOM) 與證明 (Attestations) 時

解決常見的權衡取捨

極簡與 Distroless 映像檔提供了強大的安全性優勢,但它們可能會改變你與容器互動的方式。Docker 硬化映像檔旨在維持生產力的同時強化安全性。

疑慮Docker 硬化映像檔如何提供協助
除錯能力硬化映像檔預設排除 Shell 與 CLI 工具。請使用 Docker Debug 來暫時掛載除錯邊車 (Sidecar) 進行故障排除,而無需修改原始容器。
熟悉度DHI 支援多種基礎映像檔,包括 Alpine 與 Debian 變體,因此你可以選擇熟悉的環境,同時仍能受惠於硬化實踐。
彈性執行階段的不可變性有助於保護你的容器。使用多階段建置 (Multi-stage builds) 與 CI/CD 來控制變更,並可在開發期間選擇使用以開發為導向的基礎映像檔。

透過在極簡主義與實用工具之間取得平衡,Docker 硬化映像檔支援現代開發工作流程,且不會在安全或可靠性上妥協。

使用極簡映像檔的最佳實踐

  • 使用多階段建置來分離建置階段與執行階段環境
  • 使用 CI 管線驗證映像檔行為,而非透過互動式檢查
  • 在 Dockerfile 中明確包含執行階段所需的特定相依性
  • 使用 Docker Scout 持續監控 CVE,即使在極簡映像檔中亦然

透過 Docker 硬化映像檔採用極簡或 Distroless 映像檔,你將獲得一個更安全、可預測且為生產環境準備就緒的容器環境,該環境專為自動化、清晰度與降低風險而設計。

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.