Docker 強化映象中的 glibc 和 musl 支援
目錄
Docker 強化映象 (DHI) 的構建旨在優先考慮安全性,同時不犧牲與更廣泛的開源和企業軟體生態系統的相容性。這種相容性的一個關鍵方面是支援常見的 Linux 標準庫:glibc
和 musl
。
什麼是 glibc 和 musl?
當您執行基於 Linux 的容器時,映象的 C 庫在應用程式與作業系統互動的方式中扮演著關鍵角色。大多數現代 Linux 發行版都依賴以下標準 C 庫之一:
glibc
(GNU C 庫):Debian、Ubuntu 和 Red Hat Enterprise Linux 等主流發行版上的標準 C 庫。它得到廣泛支援,通常被認為是跨語言、框架和企業軟體的最相容選項。musl
:glibc
的輕量級替代品,通常用於 Alpine Linux 等最小發行版。雖然它提供更小的映象大小和效能優勢,但musl
並不總是與需要glibc
的軟體完全相容。
DHI 相容性
DHI 映象有基於 glibc
(例如 Debian)和基於 musl
(例如 Alpine)的變體。對於相容性至關重要的企業應用程式和語言執行時,我們建議使用基於 glibc 的 DHI 映象。
如何選擇 glibc 還是 musl?
Docker 強化映象有基於 glibc(Debian)和基於 musl(Alpine)的變體,允許您根據工作負載選擇最合適的。
如果您滿足以下條件,請選擇基於 Debian 的(glibc
)映象:
- 您需要與企業工作負載、語言執行時或專有軟體廣泛相容。
- 您正在使用 .NET、Java 或 Python 等生態系統,並且帶有依賴
glibc
的原生擴充套件。 - 您希望最大程度地降低因庫不相容而導致的執行時錯誤風險。
如果您滿足以下條件,請選擇基於 Alpine 的(musl
)映象:
- 您希望擁有最小的佔用空間、更小的映象大小和更小的攻擊面。
- 您正在構建一個自定義或嚴格控制的應用程式堆疊,其中依賴項是已知且經過測試的。
- 您優先考慮啟動速度和精益部署,而不是最大相容性。
如果您不確定,請從基於 Debian 的映象開始以確保相容性,並在您確信應用程式的依賴項後評估 Alpine。