Izithombe ze-Docker ezincane ezazikholelwa kuzona*

[kubhekiselwa kunganekwane yezingane zaseMelika ethi "Injini Encane Engayenza" - cishe. umzila]*

Izithombe ze-Docker ezincane ezazikholelwa kuzona*

Uzenza kanjani ngokuzenzakalelayo izithombe ezincane ze-Docker ngezidingo zakho

Ukuthatheka Okungajwayelekile

Ezinyangeni ezimbalwa ezedlule, bengilokhu ngimatasatasa ngokuthi isithombe se-Docker singaba sincane kangakanani futhi sisasebenza?

Ngiyaqonda, umbono uyaxaka.

Ngaphambi kokuthi ngingene emininingwaneni nakwezobuchwepheshe, ngithanda ukuchaza ukuthi kungani le nkinga ingikhathaze kangaka, nokuthi ikuthinta kanjani.

Kungani usayizi ubalulekile

Ngokunciphisa okuqukethwe kwesithombe se-Docker, ngaleyo ndlela sinciphisa uhlu lobungozi. Ukwengeza, senza izithombe zihlanzeke, ngoba ziqukethe kuphela okudingekayo ukuze usebenzise izinhlelo zokusebenza.

Kukhona enye inzuzo encane - izithombe zilandwa ngokushesha, kodwa, ngombono wami, lokhu akubalulekile kangako.

Sicela uqaphele: Uma ukhathazekile ngosayizi, ama-Alpine abukeka mancane futhi angakulingana nawe.

Izithombe ezingenasici

Iphrojekthi ye-Distroless inikeza ukukhethwa kwezithombe eziyisisekelo "ezingenasici", aziqukethe iziphathi zephakheji, amagobolondo nezinye izinsiza ojwayele ukuzibona emugqeni womyalo. Ngenxa yalokho, sebenzisa abaphathi bephakheji njenge pip и apt ngeke isebenze:

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

I-Dockerfile isebenzisa isithombe se-Python 3 distroless

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 esithombeni

Ngokuvamile le nkinga ixazululwa ngokwakhiwa kwezigaba eziningi:

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/

Umhlangano wezigaba eziningi

Umphumela uyisithombe esingu-130MB ngosayizi. Akukubi kakhulu! Ukuze uqhathanise: isithombe esizenzakalelayo sePython sinesisindo esingu-929MB, kanti “esincane” (3,7-slim) - 179MB, isithombe se-alpine (3,7-alpine) ngu-98,6MB, kuyilapho isithombe esiyisisekelo se-distroless esisetshenziswe kusibonelo singu-50,9MB.

Kuhle ukuveza ukuthi esibonelweni sangaphambilini sikopisha uhla lwemibhalo lonke /usr/local/lib/python3.7/site-packages, okungase kuqukathe ukuncika esingakudingi. Nakuba kusobala ukuthi umehluko wesayizi wazo zonke izithombe ezikhona ze-Python ziyahlukahluka.

Ngesikhathi sokubhala, i-Google distroless ayisekeli izithombe eziningi: I-Java nePython zisesesigabeni sokuhlola, futhi iPython ikhona kuphela ku-2,7 no-3,5.

Izithombe ezincane

Emuva kokuthatheka kwami ​​ngokudala izithombe ezincane.

Ngokuvamile, bengifuna ukubona ukuthi izithombe ezingenasici zakhiwa kanjani. Iphrojekthi engenamandla isebenzisa ithuluzi lokwakha le-Google bazel. Kodwa-ke, ukufaka i-Bazel nokubhala izithombe zakho kuthathe umsebenzi omningi (futhi ukwethembeka, ukuqamba kabusha isondo kuyajabulisa futhi kuyafundisa). Bengifuna ukwenza lula ukudalwa kwezithombe ezincane: isenzo sokudala isithombe kufanele sibe lula kakhulu, banal. Ukuze kungabikho amafayela okucushwa akho, umugqa owodwa nje kukhonsoli: просто собрать образ для <приложение>.

Ngakho-ke, uma ufuna ukudala izithombe zakho, yazi-ke: kunesithombe sedokhi esiyingqayizivele, scratch. I-Scratch isithombe "esingenalutho", awekho amafayela kuso, nakuba sinesisindo ngokuzenzakalelayo - wow! - 77 byte.

FROM scratch

Klwelwa isithombe

Umqondo wesithombe esiklwejwayo wukuthi ungakopisha noma yikuphi ukuncika emshinini wokusingathwa kuwo futhi ukusebenzise ngaphakathi kwe-Dockerfile (lokhu kufana nokukopisha ku- apt futhi ufake kusuka ekuqaleni), noma kamuva lapho isithombe se-Docker senziwe imizimba yabantu. Lokhu kukuvumela ukuthi ulawule ngokuphelele okuqukethwe kwesitsha se-Docker, futhi ngaleyo ndlela ulawule ngokuphelele usayizi wesithombe.

Manje sidinga ukuthi ngandlela thize siqoqe lokhu kuncika. Amathuluzi akhona afana apt ikuvumela ukuthi ulande amaphakheji, kodwa aboshwe emshinini wamanje futhi, ngemva kwakho konke, awasekeli iWindows noma i-MacOS.

Ngakho-ke ngazimisela ukwakha ithuluzi lami elalizozakhela ngokuzenzakalelayo isithombe esiyisisekelo sosayizi omncane kakhulu ngangokunokwenzeka futhi lisebenzise noma yiluphi uhlelo lokusebenza. Ngisebenzise amaphakheji e-Ubuntu/Debian, ngenza ukukhetha (ukuthola amaphakheji ngokuqondile kumakhosombe) futhi ngokuphindaphindiwe ngathola ukuncika kwawo. Uhlelo bekufanele ludawunilode ngokuzenzakalelayo inguqulo yakamuva ezinzile yephakheji, ukunciphisa izingozi zokuphepha ngangokunokwenzeka.

Ngaqamba ithuluzi fetchy, ngoba... uthola futhi ulethe... okudingekayo [kusukela esiNgisini “landa”, “letha” - cishe. umzila]. Ithuluzi lisebenza ngokusebenzisa umugqa womyalo interface, kodwa ngesikhathi esifanayo inikeza API.

Ukuhlanganisa isithombe usebenzisa fetchy (ake sithathe isithombe sePython kulokhu), udinga nje ukusebenzisa i-CLI kanje: fetchy dockerize python. Ungase ucelwe isistimu yokusebenza eqondiwe kanye negama lekhodi ngoba fetchy okwamanje isebenzisa kuphela amaphakheji asekelwe ku-Debian naku-Ubuntu.

Manje ungakhetha ukuthi yikuphi ukuncika okungadingeki nhlobo (kwingqikithi yethu) futhi ungabafaki. Isibonelo, i-Python incike ku-perl, nakuba isebenza kahle ngaphandle kokufakwa kwe-Perl.

Imiphumela

Isithombe se-Python sidalwe kusetshenziswa umyalo fetchy dockerize python3.5 inesisindo esingu-35MB kuphela (ngiqinisekile ukuthi ngokuzayo ingenziwa ibelula nakakhulu). Kuvele ukuthi sikwazile ukuphuca enye i-15 WW esithombeni esingenasici.

Ungabona zonke izithombe eziqoqwe kuze kube manje lapha.

Iphrojekthi - lapha.

Uma ungekho izici, vele udale isicelo - ngizokujabulela ukusiza :) Ngisho nangaphezulu, okwamanje ngisebenzela ukuhlanganisa abanye abaphathi bephakheji ku-fetchy, ukuze kungabikho isidingo sokwakhiwa kwezigaba eziningi.

Source: www.habr.com

Engeza amazwana