VM jew Docker?

Kif tkun taf jekk għandekx bżonn Docker u mhux VM? Ikollok bżonn tiddetermina eżattament dak li trid tiżola. Jekk trid tiżola sistema b'riżorsi dedikati garantiti u hardware virtwali, allura l-għażla għandha tkun VM. Jekk għandek bżonn tiżola l-applikazzjonijiet li qed jaħdmu bħala proċessi separati tas-sistema, ser ikollok bżonn Docker.

Allura x'inhi d-differenza bejn il-kontenituri Docker u l-VMs?

Magna virtwali (VM) huwa kompjuter virtwali bl-apparati virtwali kollha u hard disk virtwali li fuqu huwa installat OS indipendenti ġdid flimkien ma 'drivers ta' apparat virtwali, ġestjoni tal-memorja u komponenti oħra. Jiġifieri, niksbu astrazzjoni ta 'ħardwer fiżiku li jippermettilna nħaddmu ħafna kompjuters virtwali fuq kompjuter wieħed.
VM installata tista' tieħu spazju fuq id-disk tal-kompjuter tiegħek b'modi differenti:

  • spazju fiss tal-hard disk, li jippermetti aċċess aktar mgħaġġel għall-hard disk virtwali u jevita l-frammentazzjoni tal-fajl;
  • allokazzjoni dinamika tal-memorja. Meta tinstalla applikazzjonijiet addizzjonali, il-memorja tiġi allokata dinamikament għalihom sakemm tilħaq l-ammont massimu allokat lilha.

Aktar ma jkun hemm magni virtwali għal kull server, aktar jieħdu spazju, u jeħtieġu wkoll appoġġ kostanti għall-ambjent meħtieġ biex titħaddem l-applikazzjoni tiegħek.

Docker huwa softwer għall-ħolqien ta' applikazzjonijiet ibbażati fuq kontenitur. Kontenituri u magni virtwali għandhom benefiċċji simili, iżda joperaw b'mod differenti. Il-kontenituri jieħdu inqas spazju għax... uża mill-ġdid aktar riżorsi kondiviżi tas-sistema ospitanti mill-VM, għaliex kuntrarjament għall-VM, jipprovdi virtwalizzazzjoni fil-livell tal-OS, mhux fil-livell tal-ħardwer. Dan l-approċċ jirriżulta fi footprint tal-memorja aktar baxx, skjerament aktar mgħaġġel, u skalar aktar faċli.

Il-kontenitur jipprovdi mekkaniżmu aktar effiċjenti għall-inkapsulament tal-applikazzjonijiet billi jipprovdi l-interfaces meħtieġa għas-sistema ospitanti. Din il-karatteristika tippermetti lill-kontenituri biex jaqsmu l-qalba tas-sistema, b'kull kontenitur jaħdem bħala proċess separat tal-OS ospitanti li għandu s-sett ta 'żoni tal-memorja tiegħu stess (l-ispazju tal-indirizz virtwali tiegħu stess). Peress li l-ispazju ta 'l-indirizz virtwali ta' kull kontenitur huwa tiegħu, data li tappartjeni għal żoni ta 'memorja differenti ma tistax tinbidel.
L-OS nattiv għal Docker huwa Linux (Docker jista 'jintuża wkoll fuq Windows u MacOS), juża l-vantaġġi ewlenin tiegħu, li jippermettulu jorganizza s-separazzjoni tal-qalba. It-tħaddim tal-kontenituri Docker fuq il-Windows se jseħħ ġewwa magna virtwali li tħaddem Linux OS, għaliex kontenituri jaqsmu l-OS tas-sistema ospitanti u l-OS prinċipali għalihom huwa Linux.

Kontenitur - kif jaħdem?

Kontenitur hija astrazzjoni fil-livell tal-applikazzjoni li tgħaqqad il-kodiċi u d-dipendenzi. Kontenituri huma dejjem maħluqa minn immaġini, iż-żieda ta 'saff ta' fuq li jista 'jinkiteb u l-inizjalizzazzjoni ta' diversi parametri. Minħabba li kontenitur għandu saff ta 'kitba tiegħu stess u l-bidliet kollha huma maħżuna f'dak is-saff, kontenituri multipli jistgħu jaqsmu l-aċċess għall-istess immaġni prinċipali.

Kull kontenitur jista 'jiġi kkonfigurat permezz ta' fajl fil-proġett docker-compose inkluż fis-soluzzjoni ewlenija - docker-compose.yml. Hemmhekk tista 'tissettja diversi parametri bħall-isem tal-kontenitur, portijiet, identifikaturi, limiti tar-riżorsi, dipendenzi bejn kontenituri oħra. Jekk ma tispeċifikax isem tal-kontenitur fis-settings, Docker se joħloq kontenitur ġdid kull darba, u jagħtih isem bl-addoċċ.

Meta kontenitur jinbeda minn immaġni, Docker jimmonta sistema ta 'fajls ta' qari-kitba fuq kwalunkwe saffi ta 'hawn taħt. Dan huwa fejn se jaħdmu l-proċessi kollha li rridu li jaħdem il-kontenitur Docker tagħna.

Meta Docker jibda kontenitur għall-ewwel darba, is-saff inizjali tal-qari-kitba huwa vojt. Meta jseħħu bidliet, huma applikati għal dan is-saff; pereżempju, jekk trid tibdel fajl, dak il-fajl jiġi kkupjat mis-saff ta' qari biss hawn taħt għas-saff ta' qari-kitba.
Il-verżjoni tal-fajl li tinqara biss għadha teżisti, iżda issa hija moħbija taħt il-kopja. Il-volumi jintużaw biex jaħżnu d-dejta, irrispettivament miċ-ċiklu tal-ħajja tal-kontenitur. Il-volumi huma inizjalizzati meta jinħoloq il-kontenitur.

Kif hija relatata l-immaġni mal-kontenitur?

Immaġni — l-element ewlieni għal kull kontenitur. L-immaġni hija maħluqa minn Dockerfile miżjud mal-proġett u hija sett ta 'sistemi ta' fajls (saffi) f'saffi fuq xulxin u miġbura flimkien, jinqara biss; in-numru massimu ta 'saffi huwa 127.

Fil-qalba ta 'kull immaġini hemm immaġini bażi, li hija speċifikata mill-kmand FROM - il-punt tad-dħul meta tinbena l-immaġni Dockerfile. Kull saff huwa saff readonly u huwa rappreżentat minn kmand wieħed li jimmodifika s-sistema tal-fajls, miktuba f'Dockerfile.
Biex tgħaqqad dawn is-saffi f'immaġini waħda, Docker juża s-sistema ta 'fajls tal-Unjoni b'ħafna saffi Avvanzata (AuFS hija mibnija fuq UnionFS), li tippermetti fajls u direttorji differenti minn saffi ta' fajls differenti li jkunu sovrapposti b'mod trasparenti, u toħloq sistema ta 'fajls koeżiva.

Is-saffi fihom metadejta li tippermettilek taħżen informazzjoni relatata dwar kull saff waqt ir-runtime u l-ħin tal-bini. Kull saff fih link għas-saff li jmiss; jekk saff ma jkollux rabta, allura huwa l-ogħla saff fl-immaġni.

Id-Dockerfile jista’ jkun fih kmandi bħal:

  • MINN — punt tad-dħul meta tifforma immaġini;
  • MAINTENER - isem is-sid tal-immaġni;
  • RUN — eżekuzzjoni tal-kmand waqt l-assemblaġġ tal-immaġni;
  • ADD - tikkopja l-fajl ospitanti għal immaġni ġdida; jekk tispeċifika l-URL tal-fajl, Docker se tniżżlu fid-direttorju speċifikat;
  • ENV - varjabbli ambjentali;
  • CMD - jibda l-ħolqien ta 'kontenitur ġdid ibbażat fuq l-immaġni;
  • ENTRYPOINT - il-kmand jiġi esegwit meta jibda l-kontenitur.
  • WORKDIR huwa d-direttorju tax-xogħol għall-eżekuzzjoni tal-kmand CMD.
  • USER - jistabbilixxi l-UID għall-kontenitur maħluq ibbażat fuq l-immaġni.
  • VOLUME - jimmonta d-direttorju ospitanti fil-kontenitur.
  • EXPOSE huwa sett ta 'portijiet li jinstemgħu fil-kontenitur.

Kif jaħdem UnionFS?

UnionFS - Utility stack file system (FS) għal Linux u FreeBSD. Dan l-FS jimplimenta mekkaniżmu ta' kopja fuq kitba (Copy-On-Write, COW). L-unità ta' ħidma ta' UnionFS hija saff; kull saff għandu jitqies bħala sistema ta' fajls sħiħa separata b'ġerarkija ta' direttorji mill-għerq innifsu. UnionFS toħloq union mount għal sistemi ta 'fajls oħra u tippermetti li fajls u direttorji minn sistemi ta' fajls differenti (imsejħa frieket) jiġu kkombinati f'sistema ta 'fajls koerenti waħda, b'mod trasparenti għall-utent.

Il-kontenut tad-direttorji bl-istess mogħdijiet se jidhru flimkien f'direttorju unifikat wieħed (fi spazju tal-isem wieħed) tas-sistema tal-fajls li tirriżulta.

UnionFS tgħaqqad saffi bbażati fuq il-prinċipji li ġejjin:

  • wieħed mis-saffi jsir is-saff tal-ogħla livell, it-tieni u saffi sussegwenti jsiru s-saffi tal-livell aktar baxx;
  • oġġetti tas-saff huma disponibbli għall-utent "minn fuq għal isfel", i.e. jekk l-oġġett mitlub ikun fis-saff "ta' fuq", jiġi rritornat, irrispettivament mill-preżenza ta 'oġġett bl-istess isem fis-saff "ta' isfel"; inkella l-oġġett tas-saff "tal-qiegħ" jiġi rritornat; jekk l-oġġett mitlub la jkun hemm u lanqas hemm, jiġi rritornat l-iżball "L-ebda fajl jew direttorju bħal dan";
  • is-saff tax-xogħol huwa dak "fuq", jiġifieri, l-azzjonijiet kollha tal-utent biex jibdlu d-dejta huma riflessi biss fuq is-saff tal-ogħla livell, mingħajr ma jaffettwa l-kontenut tas-saffi ta 'livelli aktar baxxi.

Docker hija l-aktar teknoloġija komuni għall-użu tal-kontenituri biex imexxu l-applikazzjonijiet. Sar l-istandard fil-qasam, jibni fuq il-cgroups u namespaces ipprovduti mill-kernel Linux.

Docker jippermettilna niskjeraw applikazzjonijiet malajr u nagħmlu l-aħjar użu mis-sistema tal-fajls billi naqsmu l-qalba tal-OS fost il-kontenituri kollha, li jaħdmu bħala proċessi OS separati.

Sors: www.habr.com

Żid kumment