Izithombe ze-Docker ezincane ezazikholelwa kuzona*

[ireferensi yendaba yezingane zaseMelika ethi "Injini Encane Engayenza" - trans. inothi]*

Izithombe ze-Docker ezincane ezazikholelwa kuzona*

Uzenza kanjani ngokuzenzakalelayo izithombe ze-Docker ezincane zezidingo zakho

Ukuthatheka okungajwayelekile

Ezinyangeni ezimbalwa ezedlule, bengilokhu ngimatasa ngalo mbono: isithombe se-Docker singaba sincane kangakanani futhi senze uhlelo lokusebenza lusebenze?

Ngiyaqonda, umbono uyaxaka.

Ngaphambi kokuthi ngingene emininingwaneni nasemisebenzini yobuchwepheshe, ngingathanda ukuchaza ukuthi kungani lolu daba nginentshisekelo ngalo nokuthi likuthinta kanjani wena.

Kungani usayizi ubalulekile

Ngokunciphisa okuqukethwe kwesithombe se-Docker, sehlisa uhlu lobungozi. Senza futhi izithombe zihlanzeke, njengoba ziqukethe kuphela okudingekayo ukuze usebenzise izinhlelo zokusebenza.

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

Sicela uqaphele: Uma ukhathazekile ngosayizi, izithombe ze-Alpine ngokwazo zincane futhi zingakulingana nawe.

Izithombe ezingenasici

Iphrojekthi ye-Distroless inikeza ukukhethwa kwezithombe eziyisisekelo "ezingenasici"; aziqukethe iziphathi zephakheji, amagobolondo, noma ezinye izinsiza ojwayele ukuzibona kulayini womyalo. Ngenxa yalokho, ukusebenzisa abaphathi bephakheji bathanda pip и apt ngeke kusebenze:

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 ngokuhlangana 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

Isithombe esiwumphumela singu-130MB ngosayizi. Akukubi kakhulu! Ukuze uqhathanise, isithombe esizenzakalelayo sePython sinesisindo esingu-929MB, futhi "esinciphile" esisodwa (3,7-slim) - 179MB, isithombe se-alpine (3,7-alpine) — 98,6 MB, kuyilapho isithombe esiyisisekelo se-distroless esisetshenziswe kusibonelo singu-50,9 MB.

Kungashiwo kahle ukuthi esibonelweni sangaphambilini sikopisha uhla lwemibhalo lonke /usr/local/lib/python3.7/site-packages, okungase kuqukathe ukuncika esingakudingi. Kodwa-ke, kuyacaca ukuthi umehluko wesayizi phakathi kwazo zonke izithombe ezikhona zePython ziyashintshashintsha.

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

Izithombe ezincane

Ake sibuyele ekuthathekeni kwami ​​ngokwakha izithombe ezincane.

Empeleni bengifuna ukubona ukuthi izithombe ezingenabungozi zakhiwe kanjani. Iphrojekthi engenamandla isebenzisa ithuluzi lokwakha le-Google. bazelNokho, ukufaka i-Bazel nokudala ezami izithombe kuthathe umzamo othile (futhi ukwethembeka ngokuphelele, ukusungula kabusha isondo kuyajabulisa futhi kuyafundisa). Bengifuna ukwenza lula ukudalwa kwezithombe ezehlisiwe: isenzo sokudala isithombe kufanele sibe lula kakhulu, banalNgakho-ke awekho amafayela okucushwa akho, umugqa owodwa nje kukhonsoli: просто собрать образ для <приложение>.

Ngakho-ke, uma ufuna ukudala izithombe zakho, khona-ke yazi ukuthi kunesithombe se-docker esiyingqayizivele, scratchUkuklwebha kuyisithombe "esingenalutho"; ayinawo amafayela, nakuba inesisindo—wow!—77 bytes ngokuzenzakalelayo.

FROM scratch

Klwelwa isithombe

Umqondo ongemuva kwesithombe esiklwejwayo ukuthi ungakopisha noma yikuphi ukuncika emshinini osingatha kuwo futhi ukusebenzise ngaphakathi kwe-Dockerfile (lokho kufana nokukopisha kubo apt futhi ufake kusukela ekuqaleni), noma kamuva, uma isithombe se-Docker senziwe imizimba yabantu. Lokhu kuvumela ukulawula okuphelele kokuqukethwe kwesitsha se-Docker, futhi ngaleyo ndlela ukulawula okuphelele phezu kosayizi wesithombe.

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

Ngakho-ke nginqume ukwakha ithuluzi lami elalizozakhela ngokuzenzakalelayo isithombe esiyisisekelo sosayizi omncane kakhulu ngangokunokwenzeka futhi lisasebenzise noma yiluphi uhlelo lokusebenza. Ngisebenzise amaphakheji e-Ubuntu/Debian, ngenza ukukhetha (ukubuyisa amaphakheji ngokuqondile kumakhosombe), futhi ngokuphindaphindiwe ngathola ukuncika kwawo. Uhlelo bekufanele ludawunilode ngokuzenzakalelayo inguqulo yakamuva ezinzile yephakheji, kuncishiswe ubungozi bokuphepha.

Insimbi ngiyiqambe igama fetchy, ngoba... uthola futhi ulethe... okudingekayo [from English "landa", "to bring" — trans. inothi]. Ithuluzi lisebenza nge-interface yomugqa womyalo, kodwa futhi linikeza i-API.

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

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

Imiphumela

Isithombe se-Python sidalwe kusetshenziswa umyalo fetchy dockerize python3.5 Inesisindo esingu-35MB kuphela (ngiqinisekile ukuthi ingenziwa ibe lula nakakhulu ngokuzayo). Ngakho-ke, sikwazile ukuphuca enye i-15MB esithombeni esingenasici.

Ungabuka zonke izithombe eziqoqwe kuze kube manje. lapha.

Iphrojekthi - lapha.

Uma ushoda ngezici, vele udale isicelo—ngingakujabulela ukusiza :) Ngaphezu kwalokho, okwamanje ngisebenzela ukuhlanganisa abanye abaphathi bephakheji ku-fetchy, ukuze ukwakhiwa kwezigaba eziningi kungadingeki.

Source: www.habr.com

Engeza amazwana