BuildKit: Lehakoe le Patiloeng la Docker le ka Hahang hoo e ka bang eng kapa eng
Maikutlo
Mewayz Team
Editorial Team
BuildKit: Lehakoe le Patiloeng la Docker le ka Hahang Ntho efe kapa efe
Bahlahisi ba bangata ba tseba Docker e le nako ea ho sebetsa ea setshelo e fetotseng tsela eo software e romelloang ka eona. Ke batho ba fokolang haholo ba tsebang ka enjene e lumang ka khutso ka tlas'a mohaho o mong le o mong oa sejoale-joale oa Docker - BuildKit, sistimi ea kaho ea moloko o latelang e ntseng e romelloa ka Docker ho tloha ka mofuta oa 18.09 mme ea fetoha mokokotlo oa kamehla ho Docker 23.0. Le ha lienjiniere li ngangisana ka ho sa feleng mabapi le meralo ea Kubernetes le lipaterone tsa microservice, BuildKit e ntse e tsoela pele ho fetoha e 'ngoe ea litsamaiso tse matla ka ho fetisisa, tse tenyetsehang tikolohong ea DevOps. Haeba esale u e nka joalo ka docker build e potlakileng, u siea bokhoni bo boholo tafoleng. Likhamphani tse tsamaisang liphaephe tsa CI/CD tsa boemo bo holimo li fokolitse linako tsa kaho ka 50–70% ka ho utloisisa seo BuildKit e hlileng e fanang ka sona - 'me ke qalo feela.
Se Etsang Hore BuildKit e Fapane Haholo le Sehahi sa khale
Enjene ea mantlha ea Docker build e phethile litaelo tsa Dockerfile ka tatellano, karolo e le 'ngoe ka nako, ho sa tsejoe hore na ke mosebetsi ofe o ka etsahalang ka mokhoa o sireletsehileng ka ho ts'oana. BuildKit e nkela sebaka sa mohlala oa ts'ebetso ka graph ea acyclic (DAG) - kerafo ea ho itšetleha e utloisisang hore na ke mehato efe ea ho haha e itšetlehileng ka e 'ngoe le e sa tšepahaleng. Mekhahlelo e ikemetseng e etsoa ka nako e le 'ngoe, mekhahlelo e sa sebelisoeng e tloloa ka botlalo,' me moaho oohle o fetoha tlhaloso e hlakisang seo u se batlang ho fapana le tatellano e hlokahalang ea mehato eo u tlamehang ho e pheta ka tatellano e nepahetseng.
Tlhahiso ena ea meralo e na le litlamorao tse fetang lebelo. Ha Dockerfile ea mekhahlelo e mengata e bokella Go binary mokhahlelong o le mong, e khoasolla litšepeho tsa Node.js ho e 'ngoe, 'me e bokella setšoantšo sa tlhahiso karolong ea boraro, BuildKit e ka tsamaisa mekhahlelo ea pele e 'meli ka nako e le' ngoe. Moaho oo pele o neng o nka metsotso e mene ho semathi se matla sa CI joale o phethela ka metsotsoana e mashome a robong. Stripe, Shopify, le lihlopha tse ling tse ngata tsa boenjiniere ba maemo a holimo li tlalehile melemo e ts'oanang ho ponelopele ea lisebelisoa tsa bona tsa kahare. Moetso oa DAG o boetse o bolela hore BuildKit e ka hlahisa metadata ea kaho e nepahetseng haholo - motheo oa likarolo tse joalo ka bopaki ba khale le tlhahiso ea software bill of materials (SBOM) tse bohlokoa haholo bakeng sa ts'ireletso ea phepelo ea thepa.
Ho boetse ho na le phetoho mabapi le hore na ho se sebetse ha cache ho sebetsa joang. Sehahi sa khale se felisitse karolo e 'ngoe le e 'ngoe e ka tlase ho litaelo tse fetotsoeng. BuildKit e latela li-hashes tsa litaba ho kenyelletso e 'ngoe le e' ngoe, kahoo ho fetola maikutlo ho Dockerfile ha ho felise keno ea cache e emelang metsotso e mashome a mararo ea ho bokella. Ha cache ea hau e le phapang lipakeng tsa metsotso e mehlano le metsotso e mashome a mane ea maikutlo bakeng sa sehlopha sa hau sa boenjiniere, ho nepahala hona ho bohlokoa ho feta kamoo ho neng ho ka bonahala qalong.
Multi-Platform Aha: Taelo e le 'Ngoe, Mehaho e' ngoe le e 'ngoe ea Meaho
Folakha ea --platform ea BuildKit le kopanyo ea QEMU li fetola seo e kileng ea e-ba bothata bo bohloko ba khokahanyo ea litsamaiso tse ngata hore e be taelo e le 'ngoe. Ho matha docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 . e hlahisa litšoantšo tse tharo tse lokiselitsoeng ho hlahisa litšoantšo ka tsela e tšoanang ho tloha kopo e le' ngoe ea mohaho. Bokhoni bona bo fetohile ba bohlokoa ha indasteri e fetohela ho ARM - Maemo a AWS Graviton3 a lula a fana ka ts'ebetso e betere ea 40% mesebetsing e mengata joalo ka ts'ebeletso ea webo le ts'ebetso ea data, 'me Apple Silicon e entse ARM mochini oa nts'etsopele oa kamehla bakeng sa baenjiniere ba limilione.
Pele ha ts'ehetso ea sethala sa BuildKit e hola, ho boloka lipeipi tsa kaho tse arohaneng bakeng sa meaho e fapaneng e ne e le setsi sa litšenyehelo tsa nnete. Lihlopha li ne li boloka li-Dockerfiles tse ngata, li tsamaisa liphaephe tse arohaneng tsa CI ho limathi tse entsoeng ka mekhoa e fapaneng, kapa li ne li romella litšoantšo tsa x86 hohle 'me tsa lefa kotlo ea ts'ebetso litsing tsa motheo tsa ARM. Ka BuildKit, o hlalosa moaho oa hau hang ebe o lumella sistimi hore e sebetsane le pokello e ikhethileng ea meralo pepeneneng. Merero ea Rust e hlokang ho kopanngoa, Eya merero e itšetlehileng ka CGO, liphutheloana tsa Python tse nang le li-extensions tsa C - BuildKit e sebetsana le sekhahla sa emulation ntle le ho hloka hore u utloisise lintlha tsa sethala se seng le se seng seo u se batlang.
Boleng ba khoebo bo sebetsang mona bo ka lekanngoa. Sehlopha se tsamaisang lijana tse 200 maemong a AWS Graviton ka $0.04 ka hora ea vCPU khahlano le mohlala o lekanang oa x86 ka $0.056 ka hora ea vCPU e boloka chelete e ka bang $11,520 ka selemo ho li-vCPU tse 100 - ntle le ho khetha moaho o nepahetseng. Ho etsa hore khetho eo e fumanehe ntle le boiteko ba boenjineri bocha ke mofuta oa ntlafatso ea meralo e ithuelang hang hang.
Taolo ea Lekunutu Ntle le ho Lumela ka Mekhahlelong ea Litšoantšo
E 'ngoe ea likarolo tse sa ananeloeng haholo tsa BuildKit ke liphiri tsa API. Sehahi sa khale sa Docker se ne se se na mokhoa o hloekileng oa ho fetisa mangolo a bopaki moahong ntle le mangolo ao a neng a ka fella ka lera la setšoantšo. Bahlahisi ba sebelitse ho pota-pota sena ka lihahi tsa mekhahlelo e mengata, ARG litaelo, le ho laela ka hloko - empa kotsi ea ho baka ka phoso senotlolo sa API kapa senotlolo sa SSH sa lekunutu setšoantšong se rometsoeng se ile sa lula se le holimo ka mokhoa o sa thabiseng. Lisebelisoa tsa ts'ireletso li lula li fumana mangolo a netefalitsoeng ka har'a litšoantšo tsa linkho tse phatlalalitsoeng ho liregiste tsa sechaba, 'me tse ngata tsa tsona tse lutlang li khutlela morao ka ho ts'oaroa ha lekunutu nakong ea kaho.
BuildKit's --secret e kenya data e hlokolosi tikolohong ea moaho e le tsela ea nakoana ea sistimi e teng feela bakeng sa nako ea taelo e itseng ea RUN e e hlokang mme ha ho mohla e amang sekhahla sa setšoantšo. Taelo ea Dockerfile e kang RUN --mount=type=secret,id=npmrc cat /run/secrets/npmrc> ~/.npmrc && npm install e fa mokhoa oa ho haha mokhoa oa ho fumana lintlha tsa botho tsa npm ntle le mangolo ao a kileng a hlaha setšoantšong sa ho qetela kapa leha e le efe e bohareng. Mokhoa o tšoanang o sebetsa bakeng sa mangolo-tsoibila a PyPI, litlhophiso tsa Maven, linotlolo tsa SSH bakeng sa polokelo ea lekunutu ea Git, le lisebelisoa life kapa life tse ling tsa bohlokoa tse hlokoang ke ts'ebetso ea hau ea kaho.
Bakeng sa lihlopha tse hahang li-software tse amang liindasteri tse laoloang - sethala sa tlhokomelo ea bophelo bo botle, lihlahisoa tsa fintech, software ea HR - phapang pakeng tsa "lintlha tsa bopaki li ka ba setšoantšong" le "litlaleho tse ka 'nang tsa se ke tsa e-ba setšoantšong" ke phapang pakeng tsa ho fetisa tlhahlobo ea tšireletso le ho qeta libeke tse tharo ho lokisa liphuputso. Lipolanete tse kang Mewayz, tse matlafatsang tšebetso ea khoebo bakeng sa basebelisi ba fetang 138,000 ho pholletsa le liindasteri tse kang moputso, HR, le li-invoice, li its'etleha ka mofuta ona oa ts'ireletso ea ts'ireletso molemong oa ho aha le ho tsamaisa lipeipi ho boloka ts'epo eo bareki bao ba e fetisetsang ho data ea bona e bobebe ea lichelete le ea basebetsi.
Cache Exports: Ho Etsa Liphaephe tsa CI Hantle-ntle ka potlako
Liphaephe tsa CI ke moo ts'ebetso ea kaho e leng bohlokoa haholo mme moo boiphihlelo ba kaho ea kamehla ea Docker bo bileng bohloko haholo. Limathi tse ncha tsa CI hangata li qala ka li-cache tse se nang letho, ho bolelang hore phaephe e 'ngoe le e 'ngoe e tsamaisang ntho e ngoe le e ngoe ho tloha qalong. Bakeng sa ts'ebeletso ea Java e nang le litšepiso tse makholo tsa Maven, projeke ea Rust, kapa ts'ebeliso ea Python e nang le likeketso tse boima tsa matsoalloa, sena se bolela linako tsa kaho tse lekantsoeng ka metsotso e mashome ho fapana le metsotsoana. Litsenyehelo tsa khoebo tsa CI tse tsamaeang butle li ngata haholo - li fokotsehile khafetsa, makhetlo a mangata, 'me baenjiniere ba lutse ba sa etse letho ba emetse hore liphaephe li phethehe pele ba ka kopana le ho tsoela pele.
Sesebelisoa sa ho romela cache sa BuildKit se rarolla sena ka li-caches tse ka romelloang kantle ho naha. E sebelisa --cache-to type=registry,ref=myregistry/myapp:cache le --cache-from type=registry,ref=myregistry/myapp:cache, BuildKit e sutumelletsa senepe se felletseng sa cache ho registry ka mor'a ho qala le ho hula se latelang. Cache e rarolloa ka litaba, kahoo ke likarolo tse fetotsoeng ka 'nete feela tse tla latoa hape. Lihlopha tse sebelisang paterone ena ho GitHub Actions, GitLab CI, le CircleCI li tloaetse ho fokotsa linako tsa lipeipi ho tloha metsotsong e leshome le metso e mehlano ho isa ka tlase ho tse tharo ho mathang a latelang. Litokomane tsa GitHub mabapi le li-workflows tse tsoetseng pele tsa Docker li khothaletsa mokhoa ona haholo ka lebaka lena.
Mohaho o potlakang ka ho fetesisa ke oo o ke keng oa hlola o tlameha ho o sebetsa hape. Sistimi ea polokelo ea litaba ea BuildKit ha e potlakise feela ho haha - e etsa hore mohopolo oohle oa "kaho" o be bohlale ho feta, o fetola pokello e pheta-phetoang hore e be phapang e ntseng e eketseha ea se fetohileng.
Li-export tsa Cache li boetse li kopanya ka mokhoa o hloekileng le li-workflows tsa ntlafatso tse thehiloeng lekaleng. O ka lokisa phaephe ea hau ea CI hore e oele morao ho tloha kacheng e ikhethileng ea lekala ho ea ho cache e kholo ea lekala ha ho se na cache ea lekala, ho bolelang hore makala a macha a rua molemo hang-hang ho cache e futhumetseng e bokelletsoeng ke mohala oa hau o moholo oa nts'etsopele. Baenjineri ba fumana maikutlo a potlakileng ho tsoa boitlamong ba bona ba pele ba lekaleng le lecha ho fapana le ho emela kotlo ea ho qala ho se nang letho.
💡 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: Ho aha ka Ntle ho Dockerfiles
Mohlomong bokhoni bo sa tsejoeng haholo ba BuildKit ke hore Dockerfiles ke mofuta o le mong feela oa ho kenya - ha se oona feela. BuildKit e na le meralo e ka pele ea pluggable e lumellang lipuo le lifomate tse hlalosang ka botlalo. Karolo e ka pele e hlalositsoe ke taelo ea # syntax= e kaholimo ho faele ea hau, e bolellang BuildKit hore e hule setšoantšo se itseng se ka pele 'me e se sebelise ho hlalosa le ho phethahatsa faele e setseng.
Moaho ona o nolofalitse merero e mengata e matla. Khokahano ea li-Buildpacks e lumella BuildKit ho haha lits'oants'o tsa setshelo ho tsoa ho khoutu ea mohloli oa kopo ntle le Dockerfile ho hang - e lemoha puo, e khetha litšoantšo tse loketseng, ebe e bokella sejana se lokiselitsoeng tlhahiso ka bo eona. HPC le sechaba sa likhomphutha tsa mahlale se sebelisitse litloaelo tse ka pele ho hlalosa meaho ka lipuo tse ikhethileng tse kopantseng boemeli ba ka hare ba BuildKit LLB (Low-Level Build). Liteko tsa docker/dockerfile:labs tsa syntax frontend tse nang le likarolo tse kang tšehetso ea heredoc, --network taolo ho latela taeo, le lintlha tse ntlafalitsoeng tsa cache pele li lula ka har'a syntax e tsitsitseng ea Dockerfile.
Bokhoni ba ho hlalosa sebaka sa hau sa pele se boetse se bolela hore mekhatlo e nang le litlhoko tse sa tloaelehang tsa ho haha ha ea tlameha ho khetha pakeng tsa "shoehorn ntho e 'ngoe le e 'ngoe ho Dockerfile syntax" le "lahla lijana ka ho feletseng." Moaho oa sehlopha sa FPGA firmware, litšoantšo tse kentsoeng tsa sistimi, kapa lijana tse khethehileng tsa ML li ka hlalosa moaho oa bona ka mantsoe a utloahalang bakeng sa sebaka sa bona ha ba ntse ba hlahisa litšoantšo tsa setshelo tse lumellanang le OCI tse tsamaisang kae kapa kae moo lijana li tsamaeang teng. Katoloso ena ke molemo oa 'nete oa meralo ho feta litsamaiso tsa kaho tse nkang hore sebopeho sa tsona se tsitsitse.
Provenance le SBOM: Ho aha Lefatše la Post-SolarWinds
Ts'ireletso ea phepelo ea lisebelisoa tsa software e tlohile ho tloha ho sehlohlolong ho ea ho boemo bo tlang pele ka mor'a tlolo ea molao ea SolarWinds ka 2020 le ho ba kotsing ea Log4Shell ka 2021. The Executive Order 14028 ea mmuso oa US mabapi le cybersecurity, e fanoeng ka Mots'eanong 2021, e fane ka taelo ea molao oa lisebelisoa bakeng sa borakonteraka ba mmuso. Bopaki ba boqapi ba BuildKit le likarolo tsa tlhahiso ea SOM ke karabelo e tobileng tikolohong ena ea taolo le ts'ireletso.
Ka --provenance=true le --sbom=true lifolakha, BuildKit e hlahisa bopaki bo saenneng ka mokhoa o hlakileng bo hlalosang hantle hore na ho ile ha sebelisoa eng setšoantšong sa setshelo - ke litšoantšo life tse sebelisitsoeng, litaelo tsa Dockerfile tse ileng tsa etsoa, lifaele tsa mohloli li neng li le teng, le hore na ke lintho life tse ka ntle tse ileng tsa nkoa. Bopaki bona bo latela moralo oa SLSA (Supply-chain Levels for Software Artifacts) le sebopeho sa bopaki ba in-toto, e leng se etsang hore li netefatsoe ke mochini ke lienjine tsa maano tse kang Sigstore's Cosign le OPA (Open Policy Agent).
Tlhahiso ea ts'ebetso e sebetsang eo sena se e lumellang e shebahala tjena:
- Moetsi o sutumelletsa khoutu; Phaephe ea CI e etsa hore ho be le mohaho oa BuildKit o nang le mokhoa oa ho sebetsa.
- BuildKit e hlahisa SOM e saennweng e thathamisang likarolo tsohle le mefuta ea tsona.
- SBOM e phatlalalitsoe ho ngoliso ea sets'oants'o haufi le setšoantšo sa ponahalo.
- Balaoli ba kamohelo ho sehlopha sa Kubernetes ba netefatsa hore na ho na le eng pele ba lumella thomello.
- Li-scanner tsa tlokotsi li botsa SBOM ho tseba litšoantšo tse amehang ha li-CVE tse ncha li senoloa.
Dihlopha tse kenyang tshebetsong tsamaiso ena e felletseng di ka arabela ditshenolong tsa ho ba kotsing ka dihora ho e na le matsatsi, hobane di na le mmapa o nepahetseng, o ka balwang ke mochini wa karolo e nngwe le e nngwe setshelong se seng le se seng se sebetsang. Bakeng sa likhoebo tse kang Mewayz tse hokahaneng ka botebo le phallo ea tšebetso ea bareki - ho tsamaisa meputso, ho laola data ea likepe, ho sebetsa li-invoice - bokhoni ba ho bonts'a phepelo e matla, e lekoang e ntse e hlokahala bakeng sa lipuisano tsa thekiso ea likhoebo, eseng feela ho ba le monate.
Tsela ea ho Qala: Ho Tloha ho Mehaho e Feletseng ho ea ho Liphaephe tse Tsoetseng Pele
BuildKit e se e ntse e sebetsa tikolohong ea hau ea Docker haeba u sebelisa mofuta oa morao-rao - Docker 23.0 mme hamorao e e nolofalletse ka boiketsetso. Mohato oa pele o sebetsang bakeng sa lihlopha tse ngata ke ho nolofalletsa plugin ea Docker Buildx, e pepesang karolo e felletseng ea BuildKit e behiloeng ka docker buildx subcommand. Ho matha docker buildx create --use ho theha mohlala oa sehahi sa BuildKit se nang le bokhoni bo fetang ba mokhanni oa kamehla. Ho tloha moo, ho sebelisoa ha likarolo tse tsoetseng pele hoa utloahala ho e-na le ho leka ho amohela ntho e 'ngoe le e' ngoe ka nako e le 'ngoe.
Tsela e utloahalang ea ho nkela batho ba bang bakeng sa sehlopha se ntseng se etsa likopo tsa docker e shebahala joalo ka ho eketsa li-export tsa cache ho CI pele - sena se tlisa lintlafatso tsa kapele, tse lekanyetsoang ka phetoho e nyane ea tlhophiso. Mehaho ea li-platform tse ngata e ba ea bohlokoa ha sehlopha se qala ho shebana le lisebelisoa tsa ARM. Ho kenya lekunutu ho loketse ho amohela nako efe kapa efe ha ngoliso ea liphutheloana tsa lekunutu kapa linotlolo tsa SSH li hlaha maemong a moaho. Bopaki ba boemo bo botle bo utloahala ho thusa ha litlhoko tsa tumellano kapa litlhoko tsa bareki ba khoebo li etsa hore litokomane tsa phepelo li hlokehe.
Thuto e tebileng ea BuildKit e mabapi le ho haha ka boomo. Hore na o romella sets'oants'o sa microservice, ntlha ea ho ithuta ka mochini, kapa sethala se rarahaneng joalo ka Mewayz's suite ea li-module tsa khoebo tse 207, ts'ebetso ea kaho ha se mokhoa oo o potlakileng ho o sebelisa ha o le tseleng ea ho romelloa - ke ntho ea boenjiniere e bonts'ang boleng, boemo ba ts'ireletso, le kholo ea ts'ebetso ho tsoa ho tsohle tse ka sekepeng. BuildKit e u fa lisebelisoa tsa ho etsa hore artefact e be ntle haholo. Potso ke hore na u ipha nako ea ho li sebelisa.
Lipotso Tse Botsoang Hangata
BuildKit ke eng, hona e fapane joang le sistimi ea khale ea Docker?
BuildKit ke enjene ea kaho ea moloko o latelang oa Docker, e hlahisitsoeng ho Docker 18.09 mme ea etsa ea kamehla ho Docker 23.0. Ho fapana le sehahi sa khale, BuildKit e ts'ehetsa ts'ebetso e ts'oanang, maano a tsoetseng pele a caching, ho kenya liphiri, le meaho ea sethala. E nka mokhoa oa ho aha joalo ka graph acyclic graph (DAG), e nolofalletsang tharollo e bohlale ea ho itšetleha le linako tsa ho aha ka potlako e kholo bakeng sa li-Dockerfiles tse rarahaneng, tse nang le mekhahlelo e mengata.
Na ke hloka ho kenya eng kapa eng e eketsehileng ho qala ho sebelisa BuildKit le Docker?
Ha ho na kopo e eketsehileng e hlokahalang haeba o ntse o sebelisa Docker 23.0 kapa hamorao - BuildKit e sebetsa ka mokhoa o ikhethileng. Liphetolelong tsa khale, u ka e kenya tšebetsong ka ho seta tikoloho e feto-fetohang DOCKER_BUILDKIT=1 pele o sebelisa litaelo tsa hau tsa kaho. Bakeng sa linyeoe tsa ts'ebeliso e tsoetseng pele joalo ka li-cache tsa kaho kapa li-platform tse ngata, o kanna oa batla ho lokisa mohlala oa sehahi se inehetseng sa Buildx o sebelisa docker buildx create.
Na BuildKit e ka sebelisoa ho aha lintho tsa khale ho feta litšoantšo tse tloaelehileng tsa sets'oants'o?
Ho joalo, 'me sena ke se seng sa bokhoni bo sa ananeloeng haholo ba BuildKit. E sebelisa li-frontends tse tloaelehileng le folakha ea --output, BuildKit e ka hlahisa li-binaries tse tala, li-tarballs, liwebsaete tse sa fetoheng, le li-artifacts tse ling tsa faele - eseng litšoantšo tsa OCI feela. Sena se etsa hore e be enjene ea ho aha ka kakaretso e lumellanang ka tlhaho ho polyglot monorepos le liphaephe tse rarahaneng tsa CI moo lihlopha tse fapaneng li hlokang lifomate tse fapaneng tsa tlhahiso ho tsoa ho ketane e kopaneng ea lisebelisoa.
BuildKit e kena joang sethaleng se pharaletseng sa DevOps hammoho le lisebelisoa tse kang Mewayz?
BuildKit e sebetsana le boemo bo tlase ba kaho, empa lihlopha tsa morao-rao tsa ntlafatso le tsona li hloka ho laola phallo ea mosebetsi oa khoebo, phano ea bareki le lits'ebetso tsa ts'ebetso. Platforms joalo ka Mewayz — khoebo ea li-module tse 207 e qalang ho $19/mo - e tlatselletsa lisebelisuoa tsa motheo ka ho koahela lehlakore la tšebetso la likhoebo tsa software. Ho kopanya lipeipi tsa kaho tse sebetsang hantle tse tsamaisoang ke BuildKit e nang le sethala sa tsohle ka bonngoe joalo ka Mewayz e fa lihlopha pokello e felletseng ho tloha ho khoutu ea maiketsetso ho isa ho phano ea bareki.
We use cookies to improve your experience and analyze site traffic. Cookie Policy