Imifanekiso encinci yeDocker ebikholelwa kuyo*

[kubhekiselwa kwintsomi yabantwana baseMelika ethi "Injini Encinci Enokuthi Inokuthi" - malunga. indlela]*

Imifanekiso encinci yeDocker ebikholelwa kuyo*

Uyenza njani ngokuzenzekelayo imifanekiso encinci yeDocker kwiimfuno zakho

Ukuthabatheka okungaqhelekanga

Kwezi nyanga zimbalwa zidlulileyo, bendikhe ndacinga ukuba unokuba mncinci kangakanani umfanekiso weDocker kwaye usenesicelo esisebenzayo?

Ndiyaqonda, lo mbono uyamangalisa.

Ngaphambi kokuba ndingene kwiinkcukacha kunye nobuchwepheshe, ndingathanda ukucacisa ukuba kutheni le ngxaki indikhathaze kangaka, kwaye ikukhathaza njani.

Kutheni ubungakanani bubalulekile

Ngokunciphisa imixholo yomfanekiso weDocker, ngaloo ndlela sinciphisa uluhlu lobuthathaka. Ukongezelela, senza imifanekiso ecocekileyo, kuba iqulethe kuphela into efunekayo ukuqhuba izicelo.

Kukho enye inzuzo encinci - imifanekiso ikhutshwe ngokukhawuleza, kodwa, ngokombono wam, oku akubalulekanga kangako.

Nceda uqaphele: Ukuba unexhala malunga nobungakanani, iAlpine ijongeka ngokwayo incinci kwaye iya kukulingana.

Imifanekiso engabonakaliyo

Iprojekthi Distroless inikeza ukhetho lwemifanekiso esisiseko "engenasiphelo", ayiqulathanga abaphathi bempahla, amaqokobhe kunye nezinye izinto eziluncedo oqhele ukuzibona kumgca womyalelo. Ngenxa yoko, sebenzisa abaphathi bephakheji bathanda pip ΠΈ apt ayizukusebenza:

FROM gcr.io/distroless/python3
RUN  pip3 install numpy

Dockerfile usebenzisa iPython 3 distroless image

Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM gcr.io/distroless/python3
 ---> 556d570d5c53
Step 2/2 : RUN  pip3 install numpy
 ---> Running in dbfe5623f125
/bin/sh: 1: pip3: not found

I-Pip ayikho emfanekisweni

Ngokwesiqhelo le ngxaki isonjululwa ngolwakhiwo lwezigaba ezininzi:

FROM python:3 as builder
RUN  pip3 install numpy

FROM gcr.io/distroless/python3
COPY --from=builder /usr/local/lib/python3.7/site-packages /usr/local/lib/python3.5/

Indibano yamanqanaba amaninzi

Isiphumo ngumfanekiso we-130MB ngobukhulu. Ayikhombi kakhulu! Ukuthelekisa: umfanekiso ongagqibekanga wePython unobunzima be-929MB, kwaye "omncinci" omnye (3,7-slim) - 179MB, umfanekiso wealpine (3,7-alpine) yi-98,6MB, ngelixa umfanekiso osisiseko we-distroless osetyenziswe kumzekelo yi-50,9MB.

Kulungile ukubonisa ukuba kumzekelo odlulileyo sikopa uvimba weefayili wonke /usr/local/lib/python3.7/site-packages, enokuthi iqulathe ukuxhomekeka esingayifuniyo. Nangona kucacile ukuba umehluko wobungakanani bayo yonke imifanekiso ekhoyo yePython ekhoyo iyahluka.

Ngexesha lokubhala, i-Google distroless ayixhasi imifanekiso emininzi: iJava kunye nePython zisekho kwinqanaba lokulinga, kwaye iPython ikhona kuphela kwi-2,7 kunye ne-3,5.

Imifanekiso emincinci

Buyela kumnqweno wam wokwenza imifanekiso emincinci.

Ngokubanzi, bendifuna ukubona ukuba yakhiwa njani imifanekiso engenamsebenzi. Iprojekthi engasebenziyo isebenzisa isixhobo sokwakha sikaGoogle bazel. Nangona kunjalo, ukufaka iBazel kunye nokubhala imifanekiso yakho kuthathe umsebenzi omninzi (kwaye ukunyaniseka, ukubuyisela ivili kumnandi kwaye kuyafundisa). Bendifuna ukwenza lula ukwenza imifanekiso emincinci: isenzo sokwenza umfanekiso kufuneka sibe lula kakhulu, banal. Ukuze kungabikho iifayile zoqwalaselo zakho, umgca omnye kuphela kwi-console: просто ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π· для <ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅>.

Ke, ukuba ufuna ukwenza eyakho imifanekiso, yazi ke: kukho umfanekiso wedocker owahlukileyo, scratch. Umkrwelo ngumfanekiso "ongenanto", akukho fayile kuwo, nangona inobunzima ngokungagqibekanga - wow! - 77 bytes.

FROM scratch

Krwela umfanekiso

Umbono womfanekiso wokukrwela kukuba unokukopa nakuphi na ukuxhomekeka kumatshini womamkeli ukuya kuwo kwaye uyisebenzise ngaphakathi kweDockerfile (oku kufana nokuzikhuphela apt kwaye ufake ukusuka ekuqaleni), okanye kamva xa umfanekiso weDocker usenziwa. Oku kukuvumela ukuba ulawule ngokupheleleyo imixholo yesikhongozeli seDocker, kwaye ngaloo ndlela ulawule ngokupheleleyo ubungakanani bomfanekiso.

Ngoku kufuneka ngandlela thile siqokelele ezi zixhomekeke. Izixhobo ezikhoyo ezifana apt ikuvumela ukuba ukhuphele iipakethi, kodwa zibotshelelwe kumatshini wangoku kwaye, emva kwayo yonke loo nto, azixhasi iWindows okanye iMacOS.

Ke ndiye ndazimisela ukwakha esam isixhobo esiya kwakha ngokuzenzekelayo umfanekiso osisiseko wobona bungakanani buncinci kwaye ndiqhube nasiphi na isicelo. Ndisebenzise iiphakheji ze-Ubuntu / Debian, ndenze ukhetho (ukufumana iipakethe ngokuthe ngqo kwiindawo zokugcina) kwaye ndafumana ngokuphindaphindiweyo ukuxhomekeka kwabo. Inkqubo bekumele ukuba ikhuphele ngokuzenzekelayo uguqulelo oluzinzile lwepakethe, ukunciphisa imingcipheko yokhuseleko kangangoko kunokwenzeka.

Ndabiza isixhobo fetchy, ngenxa yokuba... ufumanisa kwaye uzisa... into efunekayo [ukusuka kwisiNgesi "landa", "zisa" - malunga. indlela]. Isixhobo sisebenza nge-interface yomgca womyalelo, kodwa ngexesha elifanayo linikeza i-API.

Ukudibanisa umfanekiso usebenzisa fetchy (masithathe umfanekiso wePython ngeli xesha), kufuneka usebenzise i-CLI ngolu hlobo: fetchy dockerize python. Unokucelwa inkqubo yokusebenza ekujoliswe kuyo kunye negama lekhowudi kuba fetchy okwangoku isebenzisa kuphela iipakethe ezisekwe kwiDebian kunye noBuntu.

Ngoku unokukhetha ukuba yeyiphi na ukuxhomekeka okungafunekiyo konke konke (kwimeko yethu) kwaye ungabandakanyi. Umzekelo, iPython ixhomekeke kwiperl, nangona isebenza kakuhle ngaphandle kwePerl efakiweyo.

Iziphumo

Umfanekiso wePython owenziwe usebenzisa umyalelo fetchy dockerize python3.5 inobunzima be-35MB kuphela (ndiqinisekile ukuba kwixesha elizayo inokwenziwa lula ngakumbi). Kwavela ukuba sikwazile ukucheba enye i-15 WW kumfanekiso ongabonakaliyo.

Uyakwazi ukubona yonke imifanekiso eqokelelweyo ukuza kuthi ga ngoku apha.

Iprojekthi - apha.

Ukuba ulahlekile iimpawu, yenza nje isicelo - ndiya kuvuya ukunceda :) Ngaphezu koko, ngoku ndisebenza ngokudibanisa abanye abaphathi bephakheji kwi-fetchy, ukuze kungabikho mfuneko yokwakhiwa kwamanqanaba amaninzi.

umthombo: www.habr.com

Yongeza izimvo