[kubhekiselwa kwintsomi yabantwana baseMelika ethi "Injini Encinci Enokuthi Inokuthi" - malunga. indlela]*
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
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
Iprojekthi -
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