Open Source

Apple Container:在 Mac 上將 Linux 容器以 VM 形式執行的開源工具

Apple Container 是 Apple 開發的開源 CLI 工具,用於在 Apple Silicon Mac 上以輕量級虛擬機器形式建立和執行 Linux 容器。

Keeping this site alive takes effort — your support means everything.
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分! 無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!
Apple Container:在 Mac 上將 Linux 容器以 VM 形式執行的開源工具

多年來,在 macOS 上執行 Linux 容器一直需要一個 VM 層──Docker Desktop 的 Linux VM、Podman 的 podman-machine 或 Lima 基於 QEMU 的方法。這些解決方案可行,但會帶來開銷和複雜性。Apple Container 採取根本不同的方法,使用 Apple 原生的 Virtualization.framework 將 Linux 容器直接作為輕量級虛擬機器執行,消除了單獨的 VM 管理層。

Apple Container 以 Apache 2.0 許可證作為開源專案發布,代表了 Apple 正式進入容器工具領域。該工具使用 Swift 編寫,提供了一個簡潔的命令列介面,用於在 Apple Silicon Mac 上建立、執行和管理 Linux 容器作為 VM。它利用與 macOS 自身虛擬化功能相同的 Virtualization.framework,確保了原生效能和與主機作業系統的緊密整合。

該專案受到了開發社群的廣泛關注,特別是那些長期尋求能與 Apple 自身工具整合品質相匹配的第一方容器執行階段的 macOS 用戶。透過基於 Virtualization.framework 而非 QEMU 或 HyperKit 構建,Apple Container 在檔案系統操作、網路和裝置存取方面實現了顯著更好的效能。


Apple Container 的架構與傳統方法相比如何?

Apple Container 與傳統 macOS 容器執行階段之間的架構差異是顯著的,反映了根本不同的設計理念。

graph LR
    subgraph "傳統方法 (Docker Desktop)"
        A[Docker CLI] --> B[Docker Engine]
        B --> C[Linux VM\n(經由 HyperKit/QEMU)]
        C --> D[VM 中的容器]
    end
    subgraph "Apple Container 方法"
        E[applectl CLI] --> F[Virtualization.framework]
        F --> G[輕量級 Linux VM]
        G --> H[原生 VM 中的容器]
    end

在傳統方法中,容器執行階段(Docker Engine、containerd)在一個 Linux VM 內部執行,而該 VM 本身透過一個 hypervisor 在 Mac 上執行。這意味著每個容器操作都要經過兩個虛擬化層。Apple Container 完全跳過了中間層:每個容器都是自己的輕量級 VM,由 Virtualization.framework 直接建立和管理,沒有中間執行階段。


Apple Container 提供哪些功能?

Apple Container 內建一組豐富的功能,旨在使 macOS 上的 Linux 容器管理感覺原生且無縫。

功能描述優點
VM 原生容器每個容器作為專屬 Linux VM 執行效能、隔離性
Rosetta 2 支援在 Apple Silicon 上執行 x86_64 Linux 二進位檔相容性
檔案共享主機到 VM 的目錄掛載資料交換
連接埠轉發自動從主機對應連接埠到 VM服務存取
磁碟區管理持久化的 VM 儲存資料持久性
快照/還原VM 狀態擷取和還原開發工作流程
網路隔離每個 VM 的網路配置安全性、測試
系統資源限制每個 VM 的 CPU 和記憶體分配資源管理

這些功能的結合使 Apple Container 不僅適用於開發,也適用於測試、CI/CD,甚至是在 macOS 基礎設施上的輕量級生產工作負載。


Apple Container 如何處理網路?

容器環境中的網路傳統上很複雜,特別是在主機和容器之間建立橋接時。Apple Container 透過 Virtualization.framework 的原生網路支援簡化了這一點。

網路功能實作方式使用案例
連接埠轉發自動 NAT 與連接埠對應暴露容器服務
僅主機網路隔離的 VM 網路開發和測試
共享網路VM 共享主機的網路堆疊預設模式
橋接網路VM 在同一子網路上多容器通訊
自訂 DNS每個 VM 的 DNS 配置內部服務發現

網路模型設計為開箱即用,無需配置──執行 applectl run nginx 會自動將連接埠 80 對應到一個可用的主機連接埠、建立共享網路介面並設定 DNS 解析。進階用戶可以透過設定檔或 CLI 旗標來自訂網路。


Apple Container 與其他 macOS 容器工具相比如何?

macOS 上的容器執行階段領域包括幾個成熟的選項,各有不同的取捨。

工具底層技術效能整合度開源
Apple ContainerVirtualization.framework原生深度 macOS是 (Apache 2.0)
Docker DesktopHyperKit/QEMU中等良好部分
PodmanQEMU/podman-machine中等良好
LimaQEMU良好中等
OrbStack自訂 hypervisor極佳深度 macOS

Apple Container 的關鍵優勢在於它使用 Apple 自己的原生虛擬化框架,這意味著它可以從每次 macOS 更新中受益,無需第三方核心擴展或 hypervisor 元件。取捨在於它目前僅支援 Apple Silicon Mac,不支援 Intel 架構的 Mac。


FAQ

什麼是 Apple Container? Apple Container 是 Apple 開發的開源 CLI 工具,用於在 Apple Silicon Mac 上以輕量級虛擬機器形式建立和執行 Linux 容器,使用 Virtualization.framework 達到原生效能。

Apple Container 與 Docker Desktop 有何不同? Apple Container 使用 Apple 的 Virtualization.framework 將容器以原生 VM 形式執行,而不是透過執行容器執行階段的 Linux VM。這提供了更緊密的 macOS 整合、更好的效能和原生 Apple Silicon 支援。

Apple Container 支援哪些 Linux 發行版? Apple Container 支援多種 Linux 發行版,包括 Ubuntu、Fedora、Alpine 和 Debian。它可以自動下載和快取根檔案系統映像,並支援自訂映像。

Apple Container 是開源的嗎? 是的,Apple Container 完全以 Apache 2.0 許可證開源。原始碼可在 GitHub 上取得,社群可以貢獻改進和擴充功能。

Apple Container 的系統需求是什麼? Apple Container 需要配備 Apple Silicon(M1、M2、M3、M4 系列)且執行 macOS 14.0 或更新版本的 Mac,因為它依賴於較新版 macOS 中引入的 Virtualization.framework API。


延伸閱讀

TAG