您的位置: 首頁(yè) >游戲 >

GCP發(fā)布了kaniko 這是一個(gè)在非特權(quán)容器或Kubernetes中構(gòu)建容器映像的工具

2022-08-17 00:00:00 編輯:楊芝兒 來(lái)源:
導(dǎo)讀 谷歌發(fā)布了“kaniko”,這是一個(gè)開(kāi)源工具,用于在unprivilegedcontainer或Kubernetes集群中構(gòu)建容器映像。盡管kaniko從提供的Dockerfile構(gòu)...

谷歌發(fā)布了“kaniko”,這是一個(gè)開(kāi)源工具,用于在unprivilegedcontainer或Kubernetes集群中構(gòu)建容器映像。盡管kaniko從提供的Dockerfile構(gòu)建映像,但它并不依賴于Docker守護(hù)進(jìn)程,而是完全在用戶空間中執(zhí)行每個(gè)命令,并對(duì)產(chǎn)生的文件系統(tǒng)更改進(jìn)行快照。

從標(biāo)準(zhǔn)Dockerfile構(gòu)建映像通常依賴于對(duì)Docker守護(hù)進(jìn)程的交互訪問(wèn),該守護(hù)進(jìn)程需要對(duì)運(yùn)行它的機(jī)器的根訪問(wèn)。正如在宣布kaniko發(fā)布的谷歌云平臺(tái)博客文章中所述,這使得在無(wú)法輕松或安全地公開(kāi)其Docker守護(hù)進(jìn)程(如Kubernetes集群)的環(huán)境中構(gòu)建容器映像變得非常困難。

為了克服這些挑戰(zhàn),kanikocan可以從一個(gè)Dockerfile構(gòu)建一個(gè)acontainer映像,即使沒(méi)有特權(quán)根訪問(wèn)。Kaniko可以在一個(gè)標(biāo)準(zhǔn)的Kubernetes集群中運(yùn)行(Kubernetes secret包含推動(dòng)最終圖像所需的驗(yàn)證)、谷歌容器構(gòu)建器,或者通過(guò)Docker和gcloud SDK在本地運(yùn)行。

kaniko作為一個(gè)容器映像運(yùn)行,它需要三個(gè)參數(shù):Dockerfile、構(gòu)建上下文和應(yīng)該將最終映像推送到的注冊(cè)表的名稱。這個(gè)映像是由scratch映像構(gòu)建的,它只包含一個(gè)靜態(tài)的Go二進(jìn)制文件,以及用于推和拉映像的配置文件。kaniko執(zhí)行程序獲取并提取指定的基本映像文件系統(tǒng)到容器文件系統(tǒng)根。這個(gè)上下文中的“基本映像”在提供的Dockerfile中的FROM中指定的映像中。

然后,Kaniko按照指定的順序執(zhí)行每個(gè)Dockerfile命令,并在每個(gè)命令之后獲取文件系統(tǒng)的快照??煺帐窃谟脩艨臻g中創(chuàng)建的,方法是遍歷文件系統(tǒng)并將其與存儲(chǔ)在內(nèi)存中的先前狀態(tài)進(jìn)行比較。它將對(duì)文件系統(tǒng)的任何修改附加到基本映像的新層,并對(duì)映像元數(shù)據(jù)進(jìn)行任何相關(guān)更改。在執(zhí)行Dockerfile中的每個(gè)命令之后,執(zhí)行程序?qū)⑿聵?gòu)建的映像推入所需的注冊(cè)表。上面的所有步驟都是在executor映像的用戶空間中執(zhí)行的,這就是它如何避免需要對(duì)機(jī)器進(jìn)行特權(quán)訪問(wèn)的方式:“不涉及docker守護(hù)進(jìn)程或CLI”。

除了SHELL、HEALTHCHECK、STOPSIGNAL和ARG當(dāng)前的異常之外,大多數(shù)Dockerfile命令都可以用kaniko執(zhí)行。目前也不支持多階段Dockerfiles。kaniko團(tuán)隊(duì)表示,目前正在對(duì)這兩個(gè)限制進(jìn)行研究。

與kaniko類似的工具包括img、orca-build、buildah、FTL和Bazel rules_docker。img可以在容器中作為非根用戶運(yùn)行,但是要求img容器具有“RawProc訪問(wèn)權(quán)”來(lái)創(chuàng)建嵌套容器(kaniko不創(chuàng)建嵌套容器,因此不需要RawProc訪問(wèn)權(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支持一起使用?!?/p>

讀者感興趣的學(xué)習(xí)過(guò)程ofimage建筑如何適應(yīng)完整的容器開(kāi)發(fā)構(gòu)建和部署生命周期可能會(huì)發(fā)現(xiàn)先前InfoQ感興趣的新聞,“谷歌發(fā)布“Skaffold”,一個(gè)工具,促進(jìn)持續(xù)發(fā)展與Kubernetes”,它包含一個(gè)總結(jié)的幾個(gè)工具,提出過(guò)程在這個(gè)空間。

kaniki GitHub項(xiàng)目自述。md文件聲明,該工具還沒(méi)有準(zhǔn)備好生產(chǎn),因此貢獻(xiàn),功能要求和缺陷報(bào)告是受歡迎的。關(guān)于發(fā)布的其他信息可以在谷歌云平臺(tái)的博客文章“介紹kaniko:在Kubernetes和谷歌容器構(gòu)建器中構(gòu)建容器映像,沒(méi)有特權(quán)”中找到。


免責(zé)聲明:本文由用戶上傳,如有侵權(quán)請(qǐng)聯(lián)系刪除!

最新文章

精彩推薦

圖文推薦

點(diǎn)擊排行

2016-2022 All Rights Reserved.平安財(cái)經(jīng)網(wǎng).復(fù)制必究 聯(lián)系QQ280 715 8082   備案號(hào):閩ICP備19027007號(hào)-6

本站除標(biāo)明“本站原創(chuàng)”外所有信息均轉(zhuǎn)載自互聯(lián)網(wǎng) 版權(quán)歸原作者所有。