„Docker Architecture“: kodėl tai svarbu?



Šiame tinklaraštyje aptariama doko architektūra ir įvairūs jos komponentai. Tai pabrėžia doko savybes, kurios mums nurodo jo populiarumo priežastis.

Daugelis iš mūsų tiki, kad „Docker“ yra neatskiriama jo dalis . Taigi už šio neįtikėtino įrankio turi slypėti nuostabi architektūra. Šiame tinklaraštyje aprašysiu viską, ką privalote žinoti apie „Docker“ architektūrą. Čia aptarsiu šiuos dalykus:

  1. Tradicinė Virtualizacija vs Docker
  2. Dockerio darbo eiga
  3. „Docker“ architektūra

Tradicinė Virtualizacija Vs Docker

Kas yra virtualioji mašina (virtualioji mašina)?

VM yra virtualus serveris, kuris imituoja aparatinės įrangos serverį. Virtuali mašina remiasi fizine sistemos aparatine įranga, kad imituotų tą pačią aplinką, kurioje diegiate savo programas. Priklausomai nuo jūsų naudojimo atvejo, galite naudoti sistemos virtualią mašiną (kuri paleidžia visą OS kaip procesą, leidžiantį pakeisti tikrą mašiną virtualia mašina) arba apdoroti virtualias mašinas, leidžiančias vykdyti virtualias kompiuterio programas vien tik aplinka.





Anksčiau mes kūrėme virtualias mašinas, o kiekviena virtualioji mašina turėjo OS, kuri užėmė daug vietos ir ją apsunkino.

Kas yra „Docker“?

„Docker“ yra atviro kodo projektas, siūlantis programinės įrangos kūrimo sprendimą, vadinamą konteineriais. Norėdami suprasti „Docker“, turite žinoti, kas yra konteineriai. Pagal Dokeris , konteineris yra lengvas, atskiras, vykdomas programinės įrangos paketas, kuriame yra viskas, ko reikia norint jį paleisti.



Konteineriai nepriklauso nuo platformos, todėl „Docker“ gali veikti tiek „Windows“, tiek „Linux“ platformose. Tiesą sakant, „Docker“ taip pat galima paleisti virtualioje mašinoje, jei to reikia. Pagrindinis „Docker“ tikslas yra tai, kad jis leidžia vykdyti mikroserviso programas paskirstytoje architektūroje.

Palyginus su virtualiomis mašinomis, „Docker“ platforma išeikvoja išteklius iš aparatūros į operacinės sistemos lygį. Tai leidžia realizuoti įvairius konteinerių privalumus, pvz. programų perkeliamumas, infrastruktūros atskyrimas ir savarankiškos mikropaslaugos.

Kitaip tariant, nors „Virtual Machines“ abstrakcionuoja visą aparatūros serverį, „Containers“ - operacinės sistemos branduolį. Tai yra visiškai kitoks požiūris į virtualizavimą ir lemia daug greitesnius ir lengvesnius atvejus.



vm vs docker - docker architektūra - edureka

Dockerio darbo eiga

Pirmiausia pažvelkime į „Docker Engine“ ir jo komponentus, kad turėtume pagrindinę idėją, kaip sistema veikia. „Docker Engine“ leidžia kurti, surinkti, išsiųsti ir paleisti programas naudojant šiuos komponentus:

  1. „Docker Daemon“ : Nuolatinis foninis procesas, valdantis „Docker“ vaizdus, ​​konteinerius, tinklus ir saugyklos apimtis. „Docker“ demonas nuolat klausosi „Docker“ API užklausų ir jas apdoroja.

  2. „Docker Engine REST“ API : Programos naudoja API sąveikai su „Docker“ demonu. Jį gali pasiekti HTTP klientas.

  3. „Docker“ CLI : Komandinės eilutės sąsajos klientas sąveikai su „Docker“ demonu. Tai žymiai supaprastina konteinerių egzempliorių valdymą ir yra viena iš pagrindinių priežasčių, kodėl kūrėjai mėgsta naudoti „Docker“.

Iš pradžių „Docker“ klientas kalbasi su „Docker“ demonu, kuris sunkiai pakelia pastatą, važiuoja ir platina mūsų „Docker“ konteinerius. Iš esmės tiek „Docker“ klientas, tiek „daemon“ gali veikti toje pačioje sistemoje. Mes taip pat galime prijungti „Docker“ klientą prie anuotolinis „Docker“ demonas. Be to, naudojant „REST“ API, „Docker“ klientas ir „daemon“ bendrauja per UNIX lizdus ar tinklo sąsają.

„Docker“ architektūra

„Docker“ architektūra naudoja kliento-serverio modelį ir susideda iš „Docker’s Client“, „Docker Host“, tinklo ir saugojimo komponentų ir „Docker“ registro / koncentratoriaus. Pažvelkime į kiekvieną iš šių detaliau.

„Docker’s Client“

„Docker“ vartotojai gali bendrauti su „Docker“ per klientą. Kai paleidžiamos bet kokios dokavimo komandos, klientas jas nusiunčia į „dockerd“ demoną, kuris jas vykdo. „Docker“ API naudoja „Docker“ komandos. „Docker“ klientas gali bendrauti su daugiau nei vienu demonu.

„Docker Host“

„Docker“ pagrindinis kompiuteris suteikia pilną aplinką programoms vykdyti ir vykdyti. Ją sudaro „Docker“ demonas, vaizdai, konteineriai, tinklai ir saugykla. Kaip minėta anksčiau, demonas yra atsakingas už visus su konteineriu susijusius veiksmus ir komandas gauna per CLI arbaREST API. Jis taip pat gali bendrauti su kitais demonais, kad galėtų valdyti savo paslaugas.

„Docker“ objektai

1. Vaizdai

Vaizdai yra ne kas kita, kaip tik skaitomas dvejetainis šablonas, galintis sukurti talpyklas. Juose taip pat yra metaduomenų, apibūdinančių konteinerio galimybes ir poreikius. Vaizdai naudojami programoms saugoti ir siųsti. Vaizdas gali būti naudojamas atskirai norint sukurti talpyklą arba pritaikytas pridėti papildomų elementų dabartinei konfigūracijai išplėsti.

Naudodami privatų konteinerių registrą galite bendrinti konteinerio vaizdus visose įmonės komandose arba bendrinti su pasauliu naudodami viešąjį registrą, pvz., „Docker Hub“. Vaizdai yra pagrindinis „Docker“ patirties elementas, nes jie įgalina kūrėjus bendradarbiauti taip, kaip anksčiau nebuvo įmanoma

2. Konteineriai

Sudėtiniai rodiniai yra tam tikra susikaupusi aplinka, kurioje vykdote programas. Konteinerį apibrėžia vaizdas ir visos papildomos konfigūravimo parinktys, pateikiamos paleidžiant sudėtinį rodinį, įskaitant ir ne tik tinklo ryšius ir saugojimo parinktis. Konteineriai turi prieigą tik prie vaizde apibrėžtų išteklių, išskyrus atvejus, kai kuriant vaizdą į konteinerį yra apibrėžta papildoma prieiga.

Taip pat galite sukurti naują vaizdą pagal dabartinę sudėtinio rodinio būseną. Konteineriai yra daug mažesni nei VM, todėl juos galima susukti per kelias sekundes ir pasiekti daug didesnį serverio tankį

3. Tinklai

„Docker“ tinklas yra praėjimas, per kurį bendrauja visas izoliuotas konteineris. „Docker“ įrenginyje daugiausia yra penki tinklo tvarkyklės:

    1. Tiltas : Tai yra numatytoji konteinerio tinklo tvarkyklė. Šį tinklą naudojate, kai jūsų programa veikia atskiruose sudėtiniuose rodiniuose, t. Y. Keliuose sudėtiniuose rodiniuose, kurie bendrauja su tuo pačiu doko priegloba.

    2. Šeimininkas : Ši tvarkyklė pašalina tinklo izoliaciją tarp dokavimo talpyklų ir doko pagrindinio kompiuterio. Galite jį naudoti, kai jums nereikia jokio tinklo izoliavimo tarp pagrindinio kompiuterio ir sudėtinio rodinio.

    3. Perdanga : Šis tinklas leidžia būrio tarnyboms bendrauti tarpusavyje. Jį naudojate, kai norite, kad konteineriai veiktų skirtinguose „Docker“ pagrindiniuose kompiuteriuose, arba kai norite suformuoti būrio paslaugas keliomis programomis.

    4. Nė vienas : Ši tvarkyklė išjungia visus tinklus.

    5. macvlan : Šis tvarkyklė priskiria „Mac“ adresą konteineriams, kad jie atrodytų kaip fiziniai įrenginiai. Jis nukreipia srautą tarp konteinerių per jų „Mac“ adresus. Šį tinklą naudojate, kai norite, kad, pavyzdžiui, perkeliant VM sąranką, konteineriai atrodytų kaip fizinis įrenginys.

4. Sandėliavimas

Duomenis galite saugoti rašomame sudėtinio rodinio sluoksnyje, tačiau tam reikia saugyklos tvarkyklės. Būdamas nepertraukiamas, jis žūsta, kai konteineris neveikia. Be to, nėra lengva perduoti šiuos duomenis. Dėl nuolatinio saugojimo „Docker“ siūlo keturias galimybes:

    1. Duomenų tūriai : Jie suteikia galimybę sukurti nuolatinę saugyklą, galimybę pervadinti tomus, sąrašų tomus ir taip pat išvardyti talpyklą, susietą su tomu. Duomenų tūriai dedami į pagrindinę failų sistemą, už konteinerių kopijų rašymo mechanizme ir yra gana efektyvūs.

    2. Tūrinis konteineris : Tai yra alternatyvus metodas, kai tam skirtas konteineris talpina tūrį ir pritvirtina tą tūrį prie kitų talpyklų. Tokiu atveju tūrio talpykla nepriklauso nuo programos talpyklos, todėl galite ją bendrinti daugiau nei viename sudėtiniame rodinyje.

    3. Katalogų laikikliai : Kita galimybė yra talpinti vietinį pagrindinio kompiuterio katalogą į sudėtinį rodinį. Anksčiau minėtais atvejais tomai turėtų būti „Docker“ tomų aplanke, o kalbant apie „Directory Mounts“, bet kurį pagrindinio kompiuterio katalogą galima naudoti kaip tomo šaltinį.

    4. Saugojimo papildiniai : Saugyklos papildiniai suteikia galimybę prisijungti prie išorinių saugojimo platformų. Šie papildiniai priskiria saugyklą iš pagrindinio kompiuterio į išorinį šaltinį, pvz., Saugyklos masyvą ar prietaisą. Saugyklos papildinių sąrašą galite pamatyti „Docker“ papildinio puslapyje.

Dockerio registras

„Docker“ registrai yra paslaugos, teikiančios vietas, kuriose galite saugoti ir atsisiųsti vaizdus. Kitaip tariant, „Docker“ registre yra „Docker“ saugyklos, kuriose yra vienas ar daugiau „Docker Images“. Viešieji registrai apima du komponentus, būtent „Docker Hub“ ir „Docker Cloud“. Taip pat galite naudoti privačius registrus. Dažniausios komandos dirbant su registrais yra: „docker push“, „docker pull“, „docker run“

numatytoji eilutės vertė „Java“

Dabar, kai supratote „Docker“ architektūrą, patikrinkite tai sukūrė „Edureka“ - patikima internetinė mokymosi įmonė, turinti daugiau nei 250 000 patenkintų besimokančiųjų tinklą. „Edureka DevOps“ sertifikavimo mokymo kursas padeda besimokantiesiems suprasti, kas yra „DevOps“, ir įgyti patirties įvairiuose „DevOps“ procesuose ir įrankiuose, tokiuose kaip „Lėlė“, „Jenkins“, „Nagios“, „Ansible“, „Chef“, „Saltstack“ ir „GIT“, norint automatizuoti kelis SDLC veiksmus.

Turite mums klausimą? Prašau paminėti tai „Docker Architecture“ komentarų skyriuje ir mes su jumis susisieksime