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

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
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 numpyI-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 foundI-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 scratchKlwelwa 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 zikuvumela ukuthi ulande amaphakheji, kodwa axhumene nomshini wamanje futhi, ekugcineni, awasekeli Windows noma i-MacOS.
Ngakho nganquma ukwakha ithuluzi lami elalizokwakha ngokuzenzakalelayo isithombe esiyisisekelo sosayizi omncane ngangokunokwenzeka futhi lisenze sisebenze noma yiluphi uhlelo lokusebenza. Ngisebenzise amaphakheji Ubuntu/Debian, benze ukukhetha (ukuthola amaphakheji ngqo kusuka ezindaweni zokugcina) futhi bathola ngokuphindaphindiwe ukuncika kwawo. Uhlelo bekufanele lulande ngokuzenzakalelayo inguqulo yakamuva yephakheji ezinzile, ukunciphisa izingozi zokuphepha.
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 amaphakheji asekelwe ku- Debian и 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. .
Iphrojekthi - .
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
