Google釋出開源創建容器映像檔工具Kaniko,讓開發者不需要擁有Root權限,也能在Kubernetes叢集環境,用Dockerfile建立容器映像檔。

Google表示,用標準的Dockerfile建立容器映像檔,通常仰賴Docker守護行程的交互存取,但這個動作需要去Root權限才能執行,而可能會使像Kubernetes叢集這類無法輕易或是安全的公開其Docker守護行程的環境難以建立容器映像檔。

為克服這個問題,Google開發了Kaniko,不只能以Dockerfile建立容器映像檔後並將其推送至Registry,而且還不需要特殊權限,Google表示,使用者能在標準Kubernetes叢集、Google Kubernetes Engine或是任何沒有特殊權限的環境執行Kaniko。

以Kaniko建立容器映像檔需要3個參數,Dockerfile、Build Context以及最後推送至Registry的名字。Kaniko會拉取並且解壓縮Dockerfile中的基礎映像檔案,在執行每一行命令後對檔案系統快照,透過走訪檔案系統在使用者空間建立所有快照,並與儲存在記憶體的先前狀態比較,將得到的差異添加入基礎映像檔中,並修改相關的元資料。

Kaniko建立容器映像檔過程:

在執行完所有命令後,Kaniko會將新建的映像檔推送至指定的Registry。而Kaniko的文件解壓縮系統之所以要在使用者空間中執行,便是為了避免要求特殊權限,而且不需要Docker守護行程以及控制命令列介面工具參與。

Google提到,現在市面上有Img或是Orca-build類似Kaniko的工具,這兩個工具也都是從Dockerfile建立容器映像檔,但是皆採取不同的方法以及安全性策略。Img工具是在非特殊權限使用者建立容器映像檔,而Kaniko則是Root使用者在非特殊權限環境中建立容器映像檔。

Orca-build則是透過綑綁Runc,以核心空間來執行RUN命令,Google說,Kaniko以Root使用者權限,也能達到相同的目的。


Advertisement

更多 iThome相關內容