在今年WWDC,除了多項全新介面設計的發布之外,蘋果也悄悄的發布了一項根本性的雲原生開源專案,MacOS原生的容器技術專案,也就是容器化開源專案Containerization專案,以及對應的命令列工具container專案

蘋果工程師Michael Crosby在WWDC中發布了這個容器化開源專案(Containerization),這是一個可以像原生應用般建置容器化應用的Swift框架。「蘋果發布這個專案的目標是希望能改變Linux容器的設計和導入方式,達到更安全,更隱私,也更有效率的效果。」他強調。  

蘋果在2021年挖角了Docker公司重要工程師Michael Crosby,他是Docker專案的維護者,擔任過2018年OCI技術監督委員會主席,是容器技術標準化的關鍵推手。Michael Crosby現在成了蘋果容器化專案的關鍵推手。

過去要在macOS上執行一個容器,得先建立一個大型Linux虛擬機器,預先配置足夠的處理器和記憶體資源,才能用來執行多個容器。這個虛擬機器會將事先配置的資源,共享、分配給虛擬機器中每一個容器來運用。

這個做法的缺點是,每當要新增一個容器需要存取一份外部目錄中的檔案時,得先將Mac上的這個目錄和檔案分享給虛擬機器,接著才能提供給這份檔案資料的容器,其他容器也有機會可以存取這個檔案。
Michael Crosby指出,蘋果推出這個容器化專案想要達成三大目標,第一是安全目標,希望能容器具備現在虛擬化技術所能提供的隔離效果,也希望減少在虛擬機器中的核心工具和動態函式庫。「減少這些機制,可以減少可被駭客利用的攻擊面,也能降低維運成本。」他解釋。

其次,隱私是第二項目標,「限制可存取的目錄應該成為每一個容器的基礎能力,應該讓只有這份資料需求的容器,才能存取它。」Michael Crosby補充。最後一項專案目標是效能,希望能依據使用者所能提供的資源來調校效能。

蘋果新發表的Containerization專案是一個開源的Swift框架專案,提供了一套可以執行容器和管理容器映像檔的API,以及一個用Swift開發的系統啟動工具。要啟動一個容器,通常會先從儲存庫下載一份容器映像檔,映像檔中有一份用來啟動這個容器的配置,以及內建儲存應用程式碼和相關站是酷的檔案系統。在Containerization專案,在一個macOS容器中的檔案系統,會視為一個區塊儲存裝置(block device),會格式化成Linux最常見的EXT4目錄結構。Containerization專案提供了Swift元件,可以直接存取EXT4格式目錄中的檔案。  

為了確保夠安全的隔離應,每一個macOS容器要執行時,Containerization會同時啟動一個輕量化的虛擬機器來隔離這個容器,啟動時間不用到1秒。這個設計帶來幾個好處,第一是,可以讓每一個macOS容器可以有獨立的IP位址,讓這些容器的網路存取更有效率,存取macOS容器上的服務,不需要參考通訊埠對應表,而能直接存取。另一個好處是,可以限制,容器只能讀取到它所請求的內容,這些內容不會被其他容器接觸。在資源配置也能更有效率,只要沒有啟動容器,就不需要占用記憶體貨處理器的資源。

啟動一個maOS容器時,會透過一隻起程式vminid,進行IP指派,掛上區塊儲存裝置和相關啟動作業。傳統虛擬機器啟動時,會啟動一套完整的作業系統,但為了減少攻擊面,在Containerization專案的輕量化虛擬機器中,完全沒有核心工具和動態函式庫,移除了許多核心指令,如移除cd、cp、ls等常見目錄指令,也沒有提供libc實作。這個vminid沒有任何連結檔案,直接用了Swift的靜態Linux SDK,把vminitd編譯成一隻靜態的linux執行檔。

Containerization支援容器化標準OCI的映像檔,可以直接從Docker Hub等標準Registre直接拉取映像檔來部署。另外,也提供了一套建置Linux容器化應用的工具,也就是命令列工具container,可以管理容器映像檔和支援容器需要的儲存、網路服務等,可以支援 run、pull 及 push等標準容器化操作命令。另外,macOS容器透過Rosetta 2技術,也可以執行為x86-64架構編譯的二進位檔,也就是在Intel 處理器Mac上編譯的二進位檔。 

目前這個Containerization容器化專案需要安裝macOS 26 Beta或更新版本才能執行。若在macOS 15上執行,則會有部分網路功能的閒置。

許多開發者使用Mac電腦作為開發工具,但要在本地端提供容器化的雲原生測試環境,過去得安裝一些容器軟體,像是Docker、Podman、Orbstack或Lima等。

雖然蘋果沒有進一步說明,為何要跳下來打造雲原生生態圈最基礎的容器化技術。但隨著蘋果Containerization專案,以及對應的命令列工具container專案的發布,這意味著蘋果開始提供更原生的Linux容器支援,有助於讓macOS成為大規模雲原生架構的資訊基礎,在雲原生技術生態圈中,扮演更關鍵的角色。

 

熱門新聞

Advertisement