Ƙananan Hotunan Docker waɗanda suka yi imani da kansu*

[ koma baya ga tatsuniyar yaran Amurka "Ƙananan Injin da Zai Iya" - kimanin. layin]*

Ƙananan Hotunan Docker waɗanda suka yi imani da kansu*

Yadda ake ƙirƙirar ƙananan hotuna Docker ta atomatik don bukatun ku

Ƙaunar da ba a saba gani ba

A cikin watanni biyun da suka gabata, na damu da yadda ƙaramin hoton Docker zai iya zama kuma har yanzu aikace-aikacen yana gudana?

Na fahimta, ra'ayin baƙon abu ne.

Kafin in shiga cikakkun bayanai da fasaha, zan so in bayyana dalilin da yasa wannan matsalar ta dame ni sosai, da kuma yadda ta shafe ku.

Me yasa girman al'amura

Ta hanyar rage abubuwan da ke cikin hoton Docker, ta haka za mu rage jerin raunin. Bugu da ƙari, muna sa hotunan su zama masu tsabta, saboda sun ƙunshi kawai abin da ake buƙata don gudanar da aikace-aikace.

Akwai ƙarin ƙaramin fa'ida - ana sauke hotuna kaɗan da sauri, amma, a ganina, wannan ba shi da mahimmanci.

Da fatan za a lura: Idan kuna damuwa game da girman, Alpine kamannin kansu ƙanana ne kuma za su iya dacewa da ku.

Hotuna marasa lalacewa

Matsalolin Project yana ba da zaɓi na ainihin hotuna "marasa hankali", ba su ƙunshi manajan fakiti, harsashi da sauran abubuwan amfani waɗanda kuka saba gani akan layin umarni ba. Sakamakon haka, yi amfani da manajan fakiti kamar pip и apt ba zai yi aiki ba:

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

Dockerfile ta amfani da Python 3 hoto mara kyau

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 baya cikin hoton

Yawancin lokaci ana magance wannan matsalar ta hanyar gina matakai da yawa:

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/

Multi-mataki taro

Sakamakon shine hoton girman 130MB. Ba ma muni ba! Don kwatantawa: hoton Python tsoho yana auna 929MB, kuma "mai bakin ciki" daya (3,7-slim) - 179MB, hoto mai tsayi (3,7-alpine) shine 98,6MB, yayin da hoton da aka yi amfani da shi a cikin misali shine 50,9MB.

Yana da kyau a nuna cewa a cikin misalin da ya gabata muna yin kwafi gabaɗayan directory /usr/local/lib/python3.7/site-packages, wanda zai iya ƙunsar abubuwan dogaro da ba mu buƙata. Ko da yake a bayyane yake cewa girman bambancin duk hotunan tushe na Python ya bambanta.

A lokacin rubuce-rubuce, Google distroless baya goyan bayan hotuna da yawa: Java da Python har yanzu suna kan matakin gwaji, kuma Python kawai ya wanzu don 2,7 da 3,5.

Ƙananan hotuna

Komawa ga sha'awar ƙirƙirar ƙananan hotuna.

Gabaɗaya, ina so in ga yadda ake gina hotuna marasa ƙarfi. Aikin da ba shi da ƙarfi yana amfani da kayan aikin gini na Google bazel. Duk da haka, shigar da Bazel da rubuta hotunan ku ya ɗauki aiki mai yawa (kuma a gaskiya, sake sake fasalin dabaran yana da daɗi da ilimi). Ina so in sauƙaƙe ƙirƙirar ƙananan hotuna: aikin ƙirƙirar hoto ya kamata ya zama mai sauƙi, banal. Don haka babu fayilolin sanyi a gare ku, layi ɗaya kawai a cikin na'ura wasan bidiyo: просто собрать образ для <приложение>.

Don haka, idan kuna son ƙirƙirar hotunan ku, to ku sani: akwai irin wannan hoton docker na musamman, scratch. Scratch hoto ne "mara kyau", babu fayiloli a ciki, kodayake yana auna ta tsoho - wow! - 77 bytes.

FROM scratch

Hoton yatsa

Manufar hoton hoto shine cewa zaku iya kwafin duk wani abin dogaro daga injin mai watsa shiri a ciki kuma ko dai amfani da su a cikin Dockerfile (wannan kamar kwafin su ne zuwa apt kuma shigar daga karce), ko kuma daga baya lokacin da hoton Docker ya kasance. Wannan yana ba ku damar sarrafa abubuwan da ke cikin kwandon Docker gaba ɗaya, don haka sarrafa girman hoton gaba ɗaya.

Yanzu muna buƙatar ko ta yaya tattara waɗannan abubuwan dogaro. Kayan aikin da suka wanzu kamar apt ba ka damar zazzage fakitin, amma an haɗa su da injin na yanzu kuma, bayan haka, basa goyan bayan Windows ko MacOS.

Don haka na tashi don gina kayan aikina wanda zai gina hoto ta atomatik na mafi girman girman da zai iya aiwatar da kowane aikace-aikace. Na yi amfani da fakitin Ubuntu/Debian, na zaɓi zaɓi (samun fakiti kai tsaye daga ma'ajin) kuma na sami abubuwan dogaro da kai. Ya kamata shirin ya sauke sabon sigar fakitin ta atomatik, yana rage haɗarin tsaro gwargwadon yiwuwa.

Na sanya wa kayan aiki suna fetchy, domin shi... nemo ya kawo... abin da ake bukata [daga Turanci "kawo", "kawo" - kimanin. layi]. Kayan aiki yana aiki ta hanyar layin umarni, amma a lokaci guda yana ba da API.

Don haɗa hoto ta amfani da fetchy (bari mu dauki hoton Python wannan lokacin), kawai kuna buƙatar amfani da CLI kamar haka: fetchy dockerize python. Ana iya tambayarka tsarin aiki da manufa da sunan lambar saboda fetchy a halin yanzu yana amfani da fakiti kawai bisa Debian da Ubuntu.

Yanzu zaku iya zaɓar waɗanne abubuwan dogaro da ba a buƙata kwata-kwata (a cikin mahallin mu) kuma ku ware su. Misali, Python ya dogara da perl, kodayake yana aiki lafiya ba tare da shigar da Perl ba.

Результаты

Hoton Python an ƙirƙira ta amfani da umarnin fetchy dockerize python3.5 yana da nauyin 35MB kawai (na fi tabbatar da cewa nan gaba za a iya sanya shi ko da wuta). Ya bayyana cewa mun sami nasarar aske wani 15 WW daga hoton da ba shi da kyau.

Kuna iya ganin duk hotunan da aka tattara zuwa yanzu a nan.

Aikin - a nan.

Idan kun rasa fasali, kawai ƙirƙirar buƙata - Zan yi farin cikin taimakawa :) Har ma fiye da haka, a halin yanzu ina aiki akan haɗa sauran manajan fakitin cikin fetchy, don haka babu buƙatar ginin matakai da yawa.

source: www.habr.com

Add a comment