Sary Tiny Docker izay nino ny tenany*

[filazana momba ny angano an'ny ankizy amerikana "The Little Engine That Could" - eo ho eo. lalana]*

Sary Tiny Docker izay nino ny tenany*

Ahoana ny fomba hamoronana sary Docker kely ho azy ho an'ny filanao

Obsession tsy mahazatra

Tao anatin'ny roa volana lasa izay, variana tamin'ny haben'ny sary Docker aho ary mbola mandeha ny fampiharana?

Azoko, hafahafa ilay hevitra.

Alohan'ny hidirana amin'ny antsipiriany sy ny ara-teknika dia tiako ny hanazava ny antony nanelingelina ahy be dia be ity olana ity, ary ny momba anao.

Nahoana no zava-dehibe ny habeny

Amin'ny fampihenana ny votoatin'ny sary Docker, dia mampihena ny lisitry ny vulnerability izahay. Fanampin'izany, ataonay madio kokoa ny sary, satria tsy misy afa-tsy izay ilaina hampandehanana fampiharana.

Misy tombony kely iray hafa - ny sary dia alaina haingana kokoa, saingy, raha ny hevitro, dia tsy dia zava-dehibe loatra izany.

Azafady, azafady: Raha miahiahy momba ny habeny ianao, ny Alpine dia toa kely ary mety hifanaraka aminao.

Sary tsy misy dikany

Project Distroless dia manolotra safidy sary "tsy misy dikany" fototra, tsy misy mpitantana fonosana, akorandriaka ary fitaovana hafa izay zatra hitanao amin'ny baiko. Vokatr'izany, ampiasao ny mpitantana fonosana toy ny pip ΠΈ apt tsy mety:

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

Dockerfile mampiasa Python 3 distroless sary

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

Pip dia tsy eo amin'ny sary

Matetika ity olana ity dia voavaha amin'ny fananganana dingana maromaro:

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/

Fivoriambe maromaro

Ny vokatra dia sary mirefy 130MB. Tsy ratsy loatra! Ho fampitahana: ny sarin'ny Python default dia milanja 929MB, ary ny "manify" (3,7-slim) - 179MB, sary alpine (3,7-alpine) dia 98,6MB, raha 50,9MB kosa ny sary tsy misy dikany ampiasaina amin'ny ohatra.

Rariny ny manamarika fa amin'ny ohatra teo aloha dia mandika lahatahiry iray manontolo isika /usr/local/lib/python3.7/site-packages, izay mety misy fiankinana izay tsy ilaintsika. Na dia mazava aza fa miovaova ny fahasamihafan'ny haben'ny sary fototra Python rehetra.

Amin'ny fotoana anoratana, Google distroless dia tsy mahazaka sary maro: Java sy Python dia mbola eo amin'ny sehatra andrana, ary Python dia tsy misy afa-tsy amin'ny 2,7 sy 3,5.

Sary bitika

Miverena any amin'ny faniriako amin'ny famoronana sary kely.

Amin'ny ankapobeny, te hahita ny fomba fanamboarana sary tsy misy dikany aho. Mampiasa ny fitaovana fananganana Google ny tetikasa tsy misy dikany bazel. Na izany aza, ny fametrahana an'i Bazel sy ny fanoratana ny sarinao manokana dia mitaky asa be (ary raha ny marina, ny fanavaozana ny kodiarana dia mahafinaritra sy manabe). Te hanatsotra ny famoronana sary kely kokoa aho: ny asa famoronana sary dia tokony ho tena tsotra, banal. Mba tsy hisian'ny fichier configuration ho anao, andalana iray fotsiny ao amin'ny console: просто ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π· для <ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅>.

Noho izany, raha te hamorona ny sarinao manokana ianao, dia fantaro: misy sary docker tsy manam-paharoa toy izany, scratch. Ny Scratch dia sary "foana", tsy misy rakitra ao, na dia mavesatra aza izany - wow! - 77 bita.

FROM scratch

Scratch sary

Ny hevitry ny sary scratch dia ny ahafahanao mandika izay miankina amin'ny milina mpampiantrano azy ary na mampiasa azy ireo ao anaty Dockerfile (toy ny mandika azy ireo apt ary apetraho manomboka amin'ny scratch), na aoriana rehefa vita ny sary Docker. Izany dia ahafahanao mifehy tanteraka ny votoatin'ny container Docker, ary noho izany dia mifehy tanteraka ny haben'ny sary.

Ankehitriny dia mila manangona ireo fiankinana ireo isika. Fitaovana efa misy toy ny apt mamela anao misintona fonosana, fa mifamatotra amin'ny milina ankehitriny izy ireo ary, raha ny marina, tsy manohana Windows na MacOS.

Noho izany dia nanapa-kevitra ny hanangana ny fitaovako manokana aho izay hanangana sary fototra amin'ny habe faran'izay kely indrindra ary hampihatra fampiharana rehetra. Nampiasa fonosana Ubuntu/Debian aho, nanao safidy (maka fonosana mivantana avy amin'ny repository) ary nahita ny fiankinany. Ny programa dia tokony hisintona ho azy ny dikan-teny stable farany indrindra amin'ny fonosana, manamaivana ny risika amin'ny fiarovana araka izay azo atao.

Nomeko anarana ilay fitaovana fetchy, satria izy... mahita sy mitondra... izay ilaina [avy amin'ny teny anglisy "maka", "ento" - eo ho eo. lalana]. Ny fitaovana dia miasa amin'ny alΓ lan'ny baikon'ny baiko, fa miaraka amin'izay koa dia manolotra API.

Hanangona sary mampiasa fetchy (Andao haka sary Python amin'ity indray mitoraka ity), mila mampiasa ny CLI toy izao ianao: fetchy dockerize python. Mety hangatahana anao ny rafitra fandidiana kendrena sy ny codename satria fetchy amin'izao fotoana izao dia mampiasa fonosana mifototra amin'ny Debian sy Ubuntu ihany.

Ankehitriny ianao dia afaka misafidy izay fiankinan-doha tsy ilaina mihitsy (amin'ny toe-javatra misy antsika) ary manilika azy ireo. Ohatra, miankina amin'ny perl ny Python, na dia miasa tsara aza izy raha tsy misy Perl napetraka.

vokatra

Sary Python noforonina tamin'ny alalan'ny baiko fetchy dockerize python3.5 milanja 35MB fotsiny (Matoky aho fa amin'ny ho avy dia azo atao maivana kokoa izy io). Hita fa nahavita nanala WW 15 hafa tamin'ny sary tsy misy dikany izahay.

Hitanao daholo ny sary nangonina hatreto eto.

Tetikasa - eto.

Raha toa ka tsy manana endri-javatra ianao dia mamorona fangatahana fotsiny - faly aho hanampy :) Vao mainka aza dia miasa amin'ny fampidirana ireo mpitantana fonosana hafa amin'ny fetchy aho, ka tsy ilaina ny fananganana sehatra maro.

Source: www.habr.com

Add a comment