BuildKit: Gem zoro ezo nke Docker nke nwere ike wuo ihe ọ bụla
Okwu
Mewayz Team
Editorial Team
BuildKit: Bara nnukwu uru Docker zoro ezo nke nwere ike wuo ihe ọ bụla
Ọtụtụ ndị mmepe mara Docker dị ka akpa oge ojiri gaa nke gbanwere ka esi ebupu ngwanro. Obere ole na ole maara maka injin ahụ na-agbada nwayọ n'okpuru ụlọ Docker nke ọgbara ọhụrụ ọ bụla - BuildKit, sistemụ nrụpụta ọgbọ na-esote nke ejirila Docker ebubata kemgbe ụdị 18.09 wee bụrụ ndabere ndabere na Docker 23.0. Ọ bụ ezie na ndị injinia na-arụ ụka na-adịghị agwụ agwụ gbasara nhazi Kubernetes na ụkpụrụ microservice, BuildKit na-aga n'ihu na-aga n'ihu na otu n'ime usoro iwu kachasị ike, na-agbanwe agbanwe na gburugburu ebe obibi DevOps. Ọ bụrụ na ị na-emeso ya dị ka ngwa ngwadocker build, ị na-ahapụ nnukwu ikike na tebụl. Companieslọ ọrụ ndị na-ebupụta pipeline CI/CD dị elu ebelatala oge nrụpụta site na 50–70% naanị site na ịghọta ihe BuildKit na-enye n'ezie - nke ahụ bụkwa mmalite.
Gịnị na-eme BuildKit ka ọ dị iche na onye nrụpụta kpochapụ
Injin rụpụta Docker mbụ mezuru ntuziaka Dockerfile n'usoro, otu oyi akwa n'otu oge, na-amaghị ihe ọrụ nwere ike ime n'enweghị nsogbu. BuildKit na-eji eserese acyclic eduzi (DAG) dochie ụdị ogbugbu ahịrị ahụ - eserese dabere na-aghọta nke usoro iwu na-adabere na ibe ya na nke na-adịghị. Nkeji ndị nọọrọ onwe ha na-arụ otu oge, a na-amafe usoro ndị a na-ejighị ya kpamkpam, ụlọ ahụ dum na-aghọ nkọwa nkọwa nke ihe ịchọrọ karịa usoro usoro dị mkpa ị ga-agụgharị n'usoro ziri ezi.
Mgbanwe ụkpụrụ ụlọ a nwere nsonaazụ bara uru na-agabiga ọsọ ọsọ. Mgbe Dockerfile multi-stage na-achịkọta ọnụọgụ Go n'otu ọkwa, budata ndabere Node.js na nke ọzọ, wee chịkọta onyonyo mmepụta na nke atọ, BuildKit nwere ike ịgba ọsọ nke abụọ mbụ n'otu oge. Ihe owuwu nke were nkeji anọ na onye na-agba ọsọ CI dị ike ugbu a na-agwụcha n'okpuru sekọnd iri itoolu. Stripe, Shopify, na ọtụtụ ndị otu injinia dị elu edepụtala uru yiri nke ahụ na nlegharị anya ngwa ọrụ ime ha. Ụdị DAG pụtakwara na BuildKit nwere ike ịmepụta metadata wuo nke ọma - ntọala maka njirimara dị ka ihe akaebe na-egosi na ụgwọ ngwa ngwa (SBOM) ọgbọ nke dị oke mkpa maka nchekwa nchekwa ọkọnọ.
Enwekwara mgbanwe echiche n'ime ka mmebi cache si arụ ọrụ. Onye na-ewu ihe ochie mebiri oyi akwa ọ bụla n'okpuru ntụziaka ọ bụla gbanwere. BuildKit na-eso hashes ọdịnaya na ntinye ọ bụla, yabụ ịgbanwe okwu na Dockerfile anaghị ewepụ ntinye cache nke na-anọchi anya nkeji iri atọ nke mkpokọta. Mgbe ihe nchekwa nchekwa gị bụ ihe dị iche n'etiti nkeji ise na nkeji iri anọ maka ndị otu injinia gị, nkenke a dị mkpa karịa ka o siri dị na mbụ.
Otu Platform Na-ewuli: Otu Iwu, Nhazi ọ bụla
ọkọlọtọBuildKit's --platform ọkọlọtọ na njikọ QEMU na-agbanwe ihe bụbu nsogbu nhazi ọtụtụ sistemụ na-egbu mgbu ka ọ bụrụ otu iwu. Na-agba ọsọ docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 . na-ewepụta onyonyo dị njikere mmepụta atọ n'otu n'otu site na otu oku oku. Ikike a abụrụla ihe dị oke egwu ka ụlọ ọrụ ahụ na-atụgharị gaa na ARM - AWS Graviton3 oge na-ebuga 40% arụmọrụ ka mma na-arụ ọrụ dị ka ọrụ weebụ na nhazi data, Apple Silicon emeela ARM ka ọ bụrụ igwe mmepe ndabara maka nde ndị injinia.
Uru azụmahịa bara uru ebe a nwere ike ịtụ. Otu otu na-agba arịa 200 na AWS Graviton ihe atụ na $0.04 kwa vCPU-hour yana ihe atụ x86 nhata na $0.056 kwa elekere vCPU na-echekwa ihe dị ka $11,520 kwa afọ kwa 100 vCPUs - naanị site na ịhọrọ ụlọ kwesịrị ekwesị. Ime nhọrọ ahụ na-enweta na-enweghị mgbagha mmezigharị bụ kpọmkwem ụdị njikarịcha akụrụngwa na-akwụ ụgwọ maka onwe ya ozugbo.
Nchịkwa nzuzo na-abanyeghị n'ígwé onyonyo
Otu n'ime njirimara BuildKit enweghị ekele bụ API nzuzo ya. Onye na-ewu Docker kpochapụrụ enweghị ụzọ dị ọcha iji nyefee nzere n'ime ụlọ na-enweghị nzere ndị ahụ nwere ike ejedebe na oyi akwa onyonyo. Ndị mmepe na-arụ ọrụ na gburugburu nke a site na iji wuo ọtụtụ ọkwa, ntụziaka ARG, yana ịkpachara anya ịtụ - mana ihe egwu nke ịme igodo API na mberede ma ọ bụ igodo SSH nkeonwe n'ime onyonyo ebugoro ka dị elu nke ukwuu. Ndị na-enyocha nchekwa na-achọtakarị nzere siri ike n'ime foto akpa e bipụtara na ndekọ ọha, na ọtụtụ n'ime mpụta ahụ na-enwetaghachi ozugbo na njikwa nzuzo na-adịghị mma n'oge a na-ewu ụlọ.
BuildKit's - nzuzo na-ebuli data nwere mmetụta n'ime gburugburu ebe a na-ewu ụlọ dị ka ụzọ sistemụ faịlụ nwa oge na-adị naanị maka ogologo oge nke RUN ntuziaka nke chọrọ ya ma ghara imetụ oyi akwa onyonyo ọ bụla aka. Ntuziaka Dockerfile dị ka RUN --mount = ụdị = nzuzo, id = npmrc cat /run/nzuzo/npmrc> ~/.npmrc && npm install na-enye usoro iwu ohere ịnweta nzere npm nkeonwe na-enweghị nzere ndị ahụ na-apụta na foto ikpeazụ ma ọ bụ n'ọkwa ọ bụla. Otu ụkpụrụ ahụ na-arụ ọrụ maka nzere PyPI, ntọala Maven, igodo SSH maka ebe nchekwa Git nkeonwe, yana ihe ọ bụla ọzọ nwere mmetụta nke usoro iwu gị chọrọ.
Mbupu cache: Ime pipeline CI ngwa ngwa
CI pipeline bụ ebe arụ ọrụ kacha dị mkpa yana ebe ahụmịhe nrụpụta Docker na-ewu ewu na-ewutekarị. Ndị ọgba ọsọ CI ọhụrụ na-amalitekarị na oghere efu, nke pụtara na pipeline ọ bụla na-agbakọta ihe niile site na ọkọ. Maka ọrụ Java nwere ọtụtụ narị dabere na Maven, ọrụ Rust, ma ọ bụ ngwa Python nwere ndọtị ala dị arọ, nke a pụtara na-ewu oge tụrụ n'ime iri nkeji karịa sekọnd. Ọnụ ahịa azụmaahịa nke ngwa ngwa CI dị oke ọnụ - mbelata oge nnyefe, ogologo nzaghachi nzaghachi ogologo oge, yana ndị injinia nọ ọdụ na-eche pipeline ka ha rụchaa tupu ha enwee ike ijikọ wee gaa n'ihu.
Njirimara mbupụ cache nke BuildKit na-eji ngosipụta oghere mbupụ na-edozi nke a. N'iji --cache-to type=registry,ref=myregistry/myapp:cache na --cache-from type=registry,ref=myregistry/myapp:cache, BuildKit na-ebunye nseta ihuenyo zuru ezu na ndekọ mgbe emechara nke ọ bụla wee dọpụta ya na-esote. A na-edozi cache ahụ n'ime ọdịnaya, yabụ na ọ bụ naanị akwa agbanwere n'ezie ka a ga-eweghachi ya. Ndị otu na-eji ụkpụrụ a na GitHub Actions, GitLab CI, na CircleCI na-egbutu oge pipeline site na nkeji iri na ise ruo n'okpuru atọ na ọsọ na-esote. Akwụkwọ GitHub n'onwe ya na Docker dị elu na-arụ ọrụ na-arụ ọrụ na-akwado ụkpụrụ a kpọmkwem maka nke a.
Ụlọ kacha ọsọ bụ nke ị na-agaghị agba ọsọ ọzọ. BuildKit's layered, content-cond cache system does not just up up -ọ na-eme ka echiche dum nke "ewu" mara ihe karịa, na-atụgharị nchịkọta ugboro ugboro n'ime mgbanwe mgbanwe nke kpọmkwem ihe gbanwere.
Mbupụ cache na-ejikọkwa nke ọma na usoro mmepe dabere na alaka. Ị nwere ike hazie pipeline CI gị ka ọ daa azụ site na cache nke alaka ụlọ ọrụ gaa na cache alaka ụlọ ọrụ mgbe ọ nweghị oghere alaka dị, nke pụtara alaka ọhụrụ na-erite uru ozugbo site na cache na-ekpo ọkụ na-akwakọba site na ahịrị mmepe gị. Ndị injinia na-enweta nzaghachi ngwa ngwa site na ntinye aka mbụ ha na alaka ọhụrụ kama ichere site na ntaramahụhụ mmalite mmalite.
💡 DID YOU KNOW?
Mewayz replaces 8+ business tools in one platform
CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.
Start Free →BuildKit Frontends: Building Beyond Dockerfiles
Ma eleghị anya, ikike BuildKit kacha mara amara bụ na Dockerfiles bụ naanị otu usoro ntinye enwere ike - ọ bụghị naanị otu. BuildKit nwere ihe owuwu n'ihu plọg nke na-enye ohere ịmepụta asụsụ na ụdị nkọwa zuru oke. A na-akọwapụta ihu ihu site na ntụziaka # syntax= dị n'elu faịlụ wuo gị, nke na-agwa BuildKit ka ọ dọpụta otu onyonyo n'ihu wee jiri ya tụgharịa ma mebie faịlụ ndị ọzọ.
Ihe owuwu a enyerela ọtụtụ ọrụ aka ike. Mwekota Buildpacks na-enye BuildKit ohere ịmepụta onyonyo akpa site na koodu isi mmalite na-enweghị Dockerfile ọ bụla - ọ na-achọpụta asụsụ, họrọ ihe oyiyi ntọala kwesịrị ekwesị, ma na-achịkọta akpa dị njikere na-akpaghị aka. HPC na obodo mgbakọ sayensị ejirila ihu n'ihu omenala kọwaa ihe arụrụ n'asụsụ ndị akọwapụtara ngalaba na-achịkọta ruo na nnọchite anya LLB nke ime BuildKit (Low-Level Build). Nnwale docker/dockerfile: labs syntax frontend nwere njirimara dị ka nkwado heredoc, --netwọk njikwa kwa ntụziaka, yana ihe nrịbama cache emelitere tupu ha erute na syntax Dockerfile kwụsiri ike.
Provenance na SBOM: Ụlọ maka Post-SolarWinds World
Nchekwa nrụnye sọftụwia sitere na nchebara echiche gaa na ọkwa ọkwa bọọdụ mgbe mmebi nke SolarWinds na 2020 na adịghị ike Log4Shell na 2021. Iwu Executive nke gọọmentị US 14028 na cybersecurity, enyere na Mee 2021, nyere iwu sọftụwia akụrụngwa maka ndị ọrụ gọọmentị etiti. Ngosipụta nke BuildKit na njirimara ọgbọ SBOM bụ nzaghachi ozugbo maka usoro iwu na ebe nchekwa a.
Site na --provenance=ezi na
Usoro ọrụ bara uru nke a na-enyere aka dị ka nke a:
- Onye nrụpụta na-atụgharị koodu; CI pipeline na-akpalite BuildKit na-arụ ọrụ nke ọma.
- BuildKit na-ewepụta SBOM mbinye aka na-edepụta ihe niile mejupụtara yana ụdị ha.
- A na-ebipụta SBOM na ndekọ akpa n'akụkụ ihe ngosi onyonyo.
- Ndị na-ahụ maka nnabata na ụyọkọ Kubernetes na-enyocha ihe pụtara tupu ha ekwe ka ebuga ya.
- Ndị nyocha adịghị ike na-ajụ SBOM ka ha mata onyonyo emetụtara mgbe ekpughere CVE ọhụrụ.
Imalite: Site na Ewupụta Ndị Ana-ewu ruo na Pipeline Di elu
BuildKit na-agba ọsọ na gburugburu Docker gị ma ọ bụrụ na ị na-eji ụdị na-adịbeghị anya - Docker 23.0 wee mee ya na ndabara. Nzọụkwụ mbụ bara uru maka ọtụtụ ndị otu na-enyere ngwa mgbakwunye Docker Buildx aka, nke na-ekpughe njiri mara BuildKit nke edobere site na docker buildx subcommand. Na-agba ọsọ docker buildx create --use na-ahazi ihe atụ BuildKit nwere ikike karịa ọkwọ ụgbọ ala ndabara. Site n'ebe ahụ, nkwuba nnabata nke atụmatụ dị elu nwere ezi uche kama ịnwa ịme ihe niile ozugbo.
Ụzọ nkuchi ezi uche dị na ya maka otu ndị na-eme isi docker build arịrịọ dị ka ịgbakwunye mbupụ cache na CI mbụ - nke a na-ebuga nkwalite ọsọ ọsọ ngwa ngwa, enwere ike ịlele yana obere mgbanwe nhazi. Otutu ikpo okwu na-ewuli bara uru mgbe otu ahụ malitere ilekwasị anya na akụrụngwa ARM. Ịrịgoro nzuzo kwesịrị ịnara oge ọ bụla ndekọ ngwungwu nzuzo ma ọ bụ igodo SSH pụtara na ọnọdụ ụlọ. Ngosipụta ihe ngosi na-eme ka ọ bụrụ ihe ezi uche dị na ya iji nyere aka mgbe nrube isi chọrọ ma ọ bụ ihe ndị ahịa ụlọ ọrụ na-achọ ka akwụkwọ yinye ọkọnọ dị mkpa.
Ihe mmụta dị omimi nke BuildKit bụ maka ịkpachara anya wuo ụlọ. Ma ị na-ebufe akpa maka microservice, njedebe mmụta mmụta igwe, ma ọ bụ ikpo okwu dị mgbagwoju anya dị ka Mewayz's suite of 207 modules azụmahịa, usoro ihe a na-ewu abụghị usoro ị na-agba ọsọ n'ụzọ ị ga-esi na-ebuga - ọ bụ ihe injinia na-egosipụta àgwà, ọnọdụ nchekwa, na ntozu oke nke ihe ọ bụla na-ebupụ na ya. BuildKit na-enye gị ngwaọrụ iji mee ka ihe ahụ dị mma. Ajụjụ bụ naanị ma ị na-ewepụta oge iji ha.
Ajụjụ a na-ajụkarị
Gịnị bụ BuildKit na kedu ka o si dị iche na sistemụ Docker ama ama?
BuildKit bụ injin nrụpụta ọgbọ nke Docker, ewepụtara na Docker 18.09 wee mee ndabara na Docker 23.0. N'adịghị ka onye na-ewu ihe ochie, BuildKit na-akwado mmezu oyi akwa, atumatu caching dị elu, na-arị elu ihe nzuzo, na-ewuli ikpo okwu. Ọ na-ewere usoro iwu ihe dị ka eserese acyclic eduzi (DAG), na-eme ka mkpebi ịdabere na amamihe karịa yana oge wuo ngwa ngwa maka mgbagwoju anya, Dockerfiles ọtụtụ ọkwa.
Akwesịrị m ịwụnye ihe ọ bụla agbakwunyere iji malite iji BuildKit na Docker?
Enweghị nrụnye ọzọ achọrọ ma ọ bụrụ na ị na-agba Docker 23.0 ma ọ bụ karịa - BuildKit na-enyere ya aka na ndabara. Na ụdị ochie, ị nwere ike ịgbalite ya site na ịtọ ntọala gburugburu DOCKER_BUILDKIT=1 tupu ịme iwu iwu ụlọ gị. Maka ihe eji eme ihe dị elu dị ka caches ihe wuo ime ime ma ọ bụ ihe nrụpụta ọtụtụ, ị nwere ike hazie ihe nrụpụta ihe nrụpụta raara onwe ya nye site na iji docker buildx create.
Enwere ike iji BuildKit wuo arịa ndị karịrị onyonyo akpa ọkọlọtọ?
Ee, na nke a bụ otu n'ime ikike BuildKit enweghị ekele. N'iji ihu ihu omenala na ọkọlọtọ-- mmepụta ọkọlọtọ, BuildKit nwere ike iwepụta ọnụọgụ abụọ, tarballs, webụsaịtị static, yana ngwa faịlụ ndị ọzọ aka ike - ọ bụghị naanị onyonyo OCI. Nke a na-eme ka ọ bụrụ injin na-arụ ọrụ n'ozuzu nke dabara na polyglot monorepos na mgbagwoju anya CI pipeline ebe ndị otu dị iche iche chọrọ usoro mmepụta dị iche iche site na ngwá ọrụ jikọtara ọnụ.
Kedu ka BuildKit si dabara na ikpo okwu DevOps sara mbara yana ngwaọrụ dị ka Mewayz?
BuildKit na-ejikwa oyi akwa dị ala, mana otu mmepe ọgbara ọhụrụ dịkwa mkpa ijikwa usoro ọrụ azụmahịa, nnyefe ndị ahịa, na usoro arụmọrụ. Platform dị ka Mewayz - OS azụmahịa 207-module malite na $19/mo - na-akwado akụrụngwa akụrụngwa site na ikpuchi akụkụ arụ ọrụ nke azụmaahịa ngwanrọ. Ijikọ pipeline na-arụ ọrụ nke ọma nke BuildKit kwadoro ya na usoro ihe niile dị ka Mewayz na-enye ndị otu otu nchịkọta zuru ezu site na koodu artifact gaa na nnyefe ndị ahịa.We use cookies to improve your experience and analyze site traffic. Cookie Policy