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