2016-2022 All Rights Reserved.平安財經網.復制必究 聯系QQ280 715 8082 備案號:閩ICP備19027007號-6
本站除標明“本站原創”外所有信息均轉載自互聯網 版權歸原作者所有。
谷歌發布了“kaniko”,這是一個開源工具,用于在unprivilegedcontainer或Kubernetes集群中構建容器映像。盡管kaniko從提供的Dockerfile構建映像,但它并不依賴于Docker守護進程,而是完全在用戶空間中執行每個命令,并對產生的文件系統更改進行快照。

從標準Dockerfile構建映像通常依賴于對Docker守護進程的交互訪問,該守護進程需要對運行它的機器的根訪問。正如在宣布kaniko發布的谷歌云平臺博客文章中所述,這使得在無法輕松或安全地公開其Docker守護進程(如Kubernetes集群)的環境中構建容器映像變得非常困難。
為了克服這些挑戰,kanikocan可以從一個Dockerfile構建一個acontainer映像,即使沒有特權根訪問。Kaniko可以在一個標準的Kubernetes集群中運行(Kubernetes secret包含推動最終圖像所需的驗證)、谷歌容器構建器,或者通過Docker和gcloud SDK在本地運行。
kaniko作為一個容器映像運行,它需要三個參數:Dockerfile、構建上下文和應該將最終映像推送到的注冊表的名稱。這個映像是由scratch映像構建的,它只包含一個靜態的Go二進制文件,以及用于推和拉映像的配置文件。kaniko執行程序獲取并提取指定的基本映像文件系統到容器文件系統根。這個上下文中的“基本映像”在提供的Dockerfile中的FROM中指定的映像中。
然后,Kaniko按照指定的順序執行每個Dockerfile命令,并在每個命令之后獲取文件系統的快照。快照是在用戶空間中創建的,方法是遍歷文件系統并將其與存儲在內存中的先前狀態進行比較。它將對文件系統的任何修改附加到基本映像的新層,并對映像元數據進行任何相關更改。在執行Dockerfile中的每個命令之后,執行程序將新構建的映像推入所需的注冊表。上面的所有步驟都是在executor映像的用戶空間中執行的,這就是它如何避免需要對機器進行特權訪問的方式:“不涉及docker守護進程或CLI”。
除了SHELL、HEALTHCHECK、STOPSIGNAL和ARG當前的異常之外,大多數Dockerfile命令都可以用kaniko執行。目前也不支持多階段Dockerfiles。kaniko團隊表示,目前正在對這兩個限制進行研究。
與kaniko類似的工具包括img、orca-build、buildah、FTL和Bazel rules_docker。img可以在容器中作為非根用戶運行,但是要求img容器具有“RawProc訪問權”來創建嵌套容器(kaniko不創建嵌套容器,因此不需要RawProc訪問權)。orca-build依賴runC從Dockerfiles構建映像,而這些映像不能在容器中運行,buildah需要與Docker守護進程相同的特權才能運行。
FTL和Bazel的目標是盡可能快地為圖像子集創建Docker圖像,kankio README聲明“這些可以被看作是特殊情況下的‘快速路徑’,可以與kaniko提供的一般Dockerfiles支持一起使用。”
讀者感興趣的學習過程ofimage建筑如何適應完整的容器開發構建和部署生命周期可能會發現先前InfoQ感興趣的新聞,“谷歌發布“Skaffold”,一個工具,促進持續發展與Kubernetes”,它包含一個總結的幾個工具,提出過程在這個空間。
kaniki GitHub項目自述。md文件聲明,該工具還沒有準備好生產,因此貢獻,功能要求和缺陷報告是受歡迎的。關于發布的其他信息可以在谷歌云平臺的博客文章“介紹kaniko:在Kubernetes和谷歌容器構建器中構建容器映像,沒有特權”中找到。
2016-2022 All Rights Reserved.平安財經網.復制必究 聯系QQ280 715 8082 備案號:閩ICP備19027007號-6
本站除標明“本站原創”外所有信息均轉載自互聯網 版權歸原作者所有。