VM eða Docker?

Hvernig á að skilja að þú þarft Docker en ekki VM? Þú þarft að ákveða hvað nákvæmlega þú vilt einangra. Ef þú vilt einangra kerfi með tryggðum auðlindum og sýndarvélbúnaði, þá ætti valið að falla á VM. Ef þú þarft að einangra keyrandi forrit sem aðskilin kerfisferli þarftu Docker.

Svo hver er munurinn á Docker gámum og VM?

Sýndarvél (VM) er sýndartölva með öllum sýndartækjum og sýndarhörðum diski, þar sem nýtt sjálfstætt stýrikerfi er sett upp ásamt reklum fyrir sýndartæki, minnisstjórnun og öðrum hlutum. Það er að segja, við fáum útdrátt af líkamlegum vélbúnaði sem gerir þér kleift að keyra margar sýndartölvur á einni tölvu.
Uppsett VM getur tekið upp diskpláss á mismunandi vegu:

  • fast pláss á harða diskinum, sem gerir hraðari aðgang að sýndarharða disknum og forðast skráarbrot;
  • kraftmikla minnisúthlutun. Þegar viðbótarforrit eru sett upp verður minni úthlutað á virkan hátt fyrir þau þar til það nær hámarksupphæðinni sem því er úthlutað.

Því fleiri sýndarvélar á þjóninum, því meira pláss taka þær og þurfa einnig stöðugan stuðning umhverfisins sem þarf til að forritið þitt virki.

Docker er hugbúnaður til að byggja upp forrit byggð á gámum. Gámar og sýndarvélar hafa svipaða kosti en virka öðruvísi. Gámar taka minna pláss, vegna þess að ofnota fleiri sameiginleg auðlindir gestgjafakerfisins en VM, vegna þess ólíkt VM, veitir sýndarvæðingu á stýrikerfisstigi, ekki vélbúnaði. Þessi nálgun veitir minna fótspor minni, hraðari uppsetningu og auðveldari stærðarstærð.

Gámurinn býður upp á skilvirkari vélbúnað til að umlykja forrit með því að útvega nauðsynleg tengi við hýsilkerfið. Þessi eiginleiki gerir gámum kleift að deila kjarna kerfisins, þar sem hver ílát keyrir sem sérstakt ferli aðal stýrikerfisins, sem hefur sitt eigið safn af minnissvæðum (eigin sýndarvistfangarými). Þar sem sýndarvistfangarými hvers gáms er sitt eigið er ekki hægt að breyta gögnum sem tilheyra mismunandi minnissvæðum.
Innfædda stýrikerfið fyrir Docker er Linux (einnig er hægt að nota Docker á Windows og MacOS), það notar helstu kosti þess, sem gerir því kleift að skipuleggja skiptan kjarna. Opnun Docker gáma á Windows mun fara fram inni í Linux sýndarvél, vegna þess gámar deila stýrikerfi gestgjafakerfisins og aðal stýrikerfið fyrir þá er Linux.

Gámur - hvernig virkar það?

ílát er útdráttur á forritastigi sem sameinar kóða og ósjálfstæði. Gámar eru alltaf búnir til úr myndum, bæta við skrifanlegu topplagi og frumstilla ýmsar breytur. Vegna þess að gámur hefur sitt eigið skriflag og allar breytingar eru geymdar í því lagi, geta margir gámar deilt aðgangi að sömu aðalmyndinni.

Hægt er að stilla hvern gám í gegnum skrá í docker-compose verkefninu sem er innifalið í aðallausninni, docker-compose.yml. Þar getur þú stillt ýmsar breytur eins og heiti gáma, höfn, auðkenni, auðlindamörk, ósjálfstæði milli annarra gáma. Ef þú tilgreinir ekki gámaheiti í stillingunum mun Docker búa til nýjan gám í hvert sinn og úthluta honum nafn af handahófi.

Þegar gámur er ræstur úr mynd, festir Docker les/skrifa skráarkerfið ofan á hvaða lög sem er fyrir neðan. Þetta er þar sem öll ferli sem við viljum að Docker gámurinn okkar keyri munu keyra.

Þegar Docker byrjar fyrst gám er upphaflega lestur/skrifalagið tómt. Þegar breytingar eiga sér stað eru þær settar á það lag; til dæmis, ef þú vilt breyta skrá, þá verður sú skrá afrituð úr skrifvarða laginu fyrir neðan í les-skrifa lagið.
Skrifvarinn útgáfa af skránni verður enn til, en er nú falin undir afritinu. Rúmmál eru notuð til að geyma gögn, óháð líftíma ílátsins. Magn eru frumstillt þegar ílát er búið til.

Hvernig er myndin tengd ílátinu?

Mynd - aðalþáttur hvers íláts. Myndin er búin til úr Dockerfile sem bætt er við verkefnið og er sett af skráarkerfum (lögum) sem eru lagskipt ofan á hvert annað og flokkað saman, aðeins tiltækt til lestrar; hámarksfjöldi laga er 127.

Í hjarta hverrar myndar er grunnmynd, sem er tilgreind með FROM skipuninni - inngangspunkturinn þegar Dockerfile mynd er búin til. Hvert lag er skrifvarið lag og er táknað með einni skipun sem breytir skráarkerfinu, skrifuð í Dockerfile.
Til að sameina þessi lög í eina mynd notar Docker háþróað marglaga Union skráarkerfið (AuFS er byggt ofan á UnionFS), sem gerir mismunandi skrám og möppum úr mismunandi skráarlögum kleift að skarast á gagnsæjan hátt og búa til tengt skráarkerfi.

Lög innihalda lýsigögn sem gera þér kleift að geyma tengdar upplýsingar um hvert lag á keyrslutíma og byggingartíma. Hvert lag inniheldur hlekk á næsta lag, ef lagið hefur engan hlekk þá er þetta efsta lagið á myndinni.

Dockerfile getur innihaldið skipanir eins og:

  • FROM - inngangspunktur í myndun myndarinnar;
  • MAINTAINER - nafn eiganda myndarinnar;
  • RUN - framkvæmd skipana við myndasamsetningu;
  • ADD - afritar hýsingarskrána í nýja mynd, ef þú tilgreinir URL skrá mun Docker hala henni niður í tilgreinda möppu;
  • ENV - umhverfisbreytur;
  • CMD - byrjar að búa til nýjan ílát byggt á myndinni;
  • ENTRYPOINT - Skipunin er keyrð þegar gámurinn er ræstur.
  • WORKDIR er vinnuskráin til að framkvæma CMD skipunina.
  • USER - Stillir UID fyrir ílátið sem búið er til úr myndinni.
  • VOLUME - Festir hýsilskrána við ílátið.
  • EXPOSE er sett af höfnum sem hlustað er á í gámnum.

Hvernig virkar UnionFS?

UnionFS — þjónustustafla skráarkerfi (FS) fyrir Linux og FreeBSD. Þessi FS útfærir afrita-í-skrifa (Copy-On-Write, COW) vélbúnaðinn. Vinnueining UnionFS er lag, hvert lag ætti að líta á sem sérstakt fullgild skráarkerfi með möppustigveldi frá rótinni sjálfri. UnionFS býr til union mount fyrir önnur skráarkerfi og gerir þér kleift að sameina skrár og möppur frá mismunandi skráarkerfum (kölluð útibú) á gagnsæjan hátt í eitt tengt skráarkerfi, gagnsætt fyrir notandann.

Innihald möppu með sömu slóðum verður birt saman í einni sameinuðu möppu (í sama nafnrými) í skráarkerfinu sem myndast.

UnionFS sameinar lög byggð á eftirfarandi meginreglum:

  • eitt laganna verður að efsta stigi, annað og síðari lög verða lægra stigi;
  • laghlutir eru aðgengilegir notandanum „frá toppi til botns“, þ.e. ef umbeðinn hlutur er í „efra“ laginu er honum skilað, óháð því hvort hlutur með sama nafni sé til staðar í „neðra“ laginu; annars er "neðsta" lag hlutnum skilað; ef umbeðinn hlutur er hvorki þar né þar, kemur villan „Engin slík skrá eða skrá“ til baka;
  • vinnulagið er „efsta“, það er að segja allar aðgerðir notenda til að breyta gögnum endurspeglast aðeins á efsta stigi lagið, án þess að hafa áhrif á innihald lægra laganna.

Docker er algengasta tæknin til að nota ílát í umsóknarvinnu. Það er orðið staðallinn á þessu sviði og byggir á cgroups og nafnarúmum sem Linux kjarnann býður upp á.

Docker gerir okkur kleift að dreifa forritum á fljótlegan hátt og nýta skráarkerfið sem best með því að deila OS kjarnanum á milli allra gáma, keyra sem aðskilin stýrikerfisferli.

Heimild: www.habr.com

Bæta við athugasemd