蘋果 Containerization 提供了面向 macOS 的原生 Linux 容器支持
作者 | Claudio Masolo
策劃 | 張衛濱
蘋果在 2025 年的全球開發者大會(WWDC) 上發佈了 Containerization 和 Container CLI,這是一個在 Mac 上以輕量級虛擬機方式創建和運行 Linux 容器的工具。這是開發者在 macOS 上運行 Linux 容器方式的重大轉變,因爲這一新的開源容器化框架消除了對 Docker 等第三方工具的需求。這個基於 Swift 的框架將在 macOS 26 中直接提供原生的 Linux 容器支持,標誌着蘋果以安全、性能和隱私爲關注點進入了容器化領域。
傳統的容器化解決方案會在單個大型虛擬機中運行多個容器,與之不同,蘋果的方法是在輕量級虛擬機中運行每個 Linux 容器。這種架構提供了多項關鍵的優勢:
增強安全性:每個容器都能獲得與完整虛擬機相同的隔離級別,這顯著減少了攻擊面。最小的文件系統不包含核心實用程序、動態庫或 libc 實現,進一步降低了安全風險。
專用資源:每個容器都有自己的 IP 地址,消除了端口轉發的需求,並提供了高性能的網絡訪問。CPU 和內存資源按容器分配,當容器不運行時不消耗資源。
隱私設計:目錄和文件共享基於每個容器進行,確保只有請求的容器可以訪問共享內容,而不是將其暴露給共享虛擬機中的所有容器。
Containerization 框架廣泛使用了 Swift,包括一個完全用 Swift 編寫的自定義初始化系統vminitd。這個初始化系統作爲每個虛擬機中的第一個進程運行,並處理如下任務:
網絡接口的 IP 地址分配
文件系統掛載,包括容器的塊設備
進程啓動和監管
主機 - 容器通信的 API 管理
爲了在沒有標準庫的環境中實現這一點,蘋果使用 Swift 的靜態 Linux SDK 直接從 macOS 交叉編譯靜態 Linux 二進制文件,結合musl提供靜態鏈接支持。
儘管每個容器都在自己的虛擬機中運行,但蘋果聲稱通過多項優化實現了亞秒級的啓動時間:
優化 Linux 內核:爲容器化工作負載特別設計的自定義內核配置
EXT4 塊設備:容器文件系統作爲格式化的 EXT4 塊設備進行暴露,以實現高性能訪問
Apple Silicon 優化:整個技術棧針對蘋果定製的 silicon 架構進行了優化
蘋果爲構建容器化解決方案的開發者提供了框架,並提供了一個命令行工具供立即使用。containerCLI 工具提供了熟悉的類 Docker 命令:
該工具提供 XPC 服務,用於存儲、鏡像管理、網絡服務和容器運行時管理,所有這些都是使用 Containerization API 構建的。
蘋果已經在 GitHub 上將 Containerization 框架和 container CLI 工具作爲開源項目發佈。代碼倉庫包括:
框架和工具的完整源代碼
演示集成的示例項目
技術文檔和架構的概述
vminitd 中使用的跨平臺 Swift 包
蘋果進入容器化領域使其加入了一個已經形成的開源替代 Docker 的生態系統,這些替代方案最近獲得了顯著的關注。由紅帽開發的 Podman 是最著名的 Docker 替代方案,它提供了符合 OCI 標準的容器管理,具有 daemonless 架構,消除了對 root 權限的需求。這種無 root 操作提供了增強的安全性,使 Podman 在安全至關重要的環境中特別有吸引力。其他值得注意的解決方案包括 containerd,它作爲 Kubernetes 使用的底層容器運行時,以及 Buildah,它專門用於在不需要完整容器運行時的情況下構建容器鏡像。像 LXD 這樣的工具專注於系統容器而不是應用程序容器,而像 Rancher Desktop 這樣的解決方案提供了進行容器管理的用戶友好的圖形界面。蘋果的獨特方法,即在每個容器中運行自己的輕量級虛擬機,將其與這些現有解決方案區分開來,這些解決方案通常依賴於共享內核容器化技術,如 cgroups 和 namespaces。
Containerization 框架和 containerCLI 將隨 macOS 26 提供,開源組件在 GitHub 上立即可用。開發者可以探索框架,爲其開發做出貢獻,並開始構建在 macOS 上原生集成 Linux 容器的解決方案。
查看英文原文:
Apple Containerization a Native Linux Container Support for macOS(https://www.infoq.com/news/2025/06/apple-container-linux/)
聲明:本文由 InfoQ 翻譯,未經許可禁止轉載。