Prezentare generală a arhitecturii Docker și componentele Docker [Pentru începători]

Publicat: 2020-12-31

Dacă ați întâlnit recent lumea containerelor, probabil că nu este o idee rea să înțelegeți elementele de bază care lucrează împreună pentru a oferi beneficii de containerizare. Dar înainte de asta, există o întrebare pe care o poți pune. Ce problemă rezolvă containerele?

După construirea unei aplicații într-un ciclu de viață tipic de dezvoltare, dezvoltatorul o trimite testerului în scopuri de testare. Cu toate acestea, deoarece mediile de dezvoltare și de testare sunt diferite, codul nu funcționează.

Acum, în mod predominant, există două soluții la acest lucru – fie utilizați o mașină virtuală, fie un mediu containerizat, cum ar fi Docker. În vremurile bune, organizațiile obișnuiau să implementeze VM-uri pentru rularea mai multor aplicații.

Deci, de ce au început să adopte containerizarea în locul VM-urilor? În acest articol, vom oferi explicații detaliate pentru toate aceste întrebări.

În spatele acestui instrument fantastic, trebuie să existe o arhitectură la fel de bine gândită. Înainte de a cunoaște componentele arhitecturii Docker, să înțelegem containerele Docker și modul în care acestea sunt superioare mașinilor virtuale.

Cuprins

Containere Docker

Docker este un proiect open-source care oferă capacitatea de a crea, împacheta și rula aplicații în medii izolate și limitate, numite containere.

Cu toată izolarea și securitatea oferite de platforma Docker, vă permite să rulați mai multe containere simultan pe o anumită gazdă.

Motivele pentru care containerele Docker sunt adoptate pe scară largă includ

  • Le permite dezvoltatorilor să scrie cod local și să partajeze munca cu echipa lor folosind Containers.
  • Ei își pot împinge aplicațiile în mediile de testare, care sunt containerele și pot executa teste automate.
  • Când sunt găsite erori, acestea pot fi remediate în mediul de dezvoltare și apoi redistribuite.
  • Obținerea unei remedieri este la fel de simplă ca împingerea unei imagini actualizate în mediul de producție.

Înainte de a pătrunde adânc în subiect, trebuie să diferențiem practicile tradiționale de virtualizare de containerizarea de nouă generație.

Mașini virtuale vs. containere Docker

Înainte să folosim containerizarea pentru practicile noastre DevOps, mașinile virtuale erau pe primul loc. Obișnuiam să creăm VM-uri pentru fiecare aplicație.

În timp ce VM-urile îndeplineau aproape toate necesitățile, dezavantajul utilizării VM-urilor a fost greoaie și a alocat toate resursele necesare de memorie și hardware de la mașinile gazdă subiacente.

Cu toate acestea, a fost ușor evitată cu containerizarea, deoarece containerele oferă virtualizare la nivel de sistem de operare și necesită, de obicei, mai puțină memorie. Astfel, a devenit popular și a fost în cele din urmă adoptat de comunitatea DevOps.

Sursa imaginii

Diagrama de mai sus descrie modul în care VM-urile și arhitecturile Containers diferă și de ce Containers au depășit acum VM-urile pentru procesele de dezvoltare de zi cu zi. Spre deosebire de VM, Containerele stau deasupra Motoarelor Container pentru a oferi virtualizare la nivel de sistem de operare, economisind astfel multe resurse.

Docker Engine

Înainte de a discuta despre diferitele componente arhitecturale ale Docker, este esențial să înțelegeți fluxul de lucru al Docker. Să aruncăm o privire la motorul Docker și la câteva părți ale acestuia, care ne vor oferi o idee despre cum funcționează sistemul Docker. Motorul Docker este în primul rând o aplicație tipică client-server cu trei componente principale.

Server (Daemon)

Daemonul Docker este un proces continuu care rulează în fundal și gestionează toate obiectele Docker. Ascultă solicitările API-ului Docker prezentate de client și le procesează continuu.

Rest API

Este interfața pe care clienții Docker o folosesc pentru a interacționa cu demonul Docker. Clienții pot vorbi cu demonul prin intermediul API-ului și îi pot oferi instrucțiuni.

Client

Clientul Docker este o interfață de linie de comandă (CLI) care poate interacționa cu demonul. Simplifică întregul proces de gestionare a containerelor.

Sursa imaginii

Clientul Docker (care poate fi un client HTTP, cum ar fi un CLI) vorbește cu demonul, care îndeplinește sarcina grea de a crea, rula și partaja containere. Clientul și demonul pot rula fie pe aceeași mașină, fie pot conecta un client la un daemon la distanță. Clientul și demonul comunică între ele folosind un API Rest prin socket-uri sau interfață de rețea. Clientul Docker ajută utilizatorii să gestioneze obiecte Docker, cum ar fi containere, imagini, volume etc. Aflați mai multe despre proiectele Docker

Înscrieți-vă la cursurile de dezvoltare software de la cele mai bune universități din lume. Câștigă programe Executive PG, programe avansate de certificat sau programe de master pentru a-ți accelera cariera.

Componente arhitecturale

După cum sa discutat mai devreme, Docker utilizează o arhitectură Client-Server, în care Clientul vorbește cu demonul printr-un API Rest. Arhitectura Docker constă din mai multe componente, după cum se discută mai jos.

Sursa imaginii

Daemon

Ascultă solicitările API inițiate de clienți și gestionează obiectele Docker, inclusiv containere, imagini, volume și rețele. De asemenea, poate comunica cu alți daemoni pentru a gestiona serviciile Docker, în special pentru a gestiona rețele mari Docker.

Client

Utilizatorii Docker pot comunica cu demonul folosind Clientul Docker. Utilizatorii execută comenzi precum „Docker run…” folosind un client precum CLI, care apoi înaintează aceste comenzi către Docker (daemon), realizându-le în cele din urmă. Clientul Docker comunică cu mai mulți demoni.

Registre

Stochează imagini Docker și poate fi public sau privat. Docker este configurat să caute imagini în mod implicit pe Docker Hub. Când clientul lansează o comandă de trage sau de rulare, imaginile sunt extrase din depozite.

Obiecte Docker

Când lucrăm cu Docker, interacționăm cu mai multe obiecte precum containere, imagini, volume, rețele etc.

Unele dintre aceste obiecte sunt

Imagini

Este un șablon numai pentru citire și conține instrucțiuni pentru crearea containerelor. De asemenea, conține metadate care descriu capacitățile containerului. Utilizatorii pot extrage imagini din registrul Docker și pot crea straturi de imagini inscriptibile deasupra lor pentru a crea imagini personalizate pentru a se potrivi cerințelor aplicației lor. Unele idei populare includ Ubuntu, Nginx, MySQL etc. Aceste idei pot fi împărtășite în echipe, ceea ce îi ajută să lucreze în colaborare la o aplicație.

Containere

Containerele sunt exemple de imagini care oferă medii izolate pentru aplicații. Ei au acces doar la resurse care sunt definite de imaginile folosite pentru a le construi.

Reţea

Docker Networks permite containerelor izolate din aceeași rețea să comunice și să partajeze resurse. Unele rețele furnizate de Docker includ bridge, host, overlay, Macvlan etc.

Depozitare

Docker vă permite să stocați date în stratul de container inscriptibil cu ajutorul driverelor. Docker permite patru opțiuni pentru stocare persistentă - Volume Docker, Containere de volum, Monturi de director și Pluginuri de stocare.

Cea mai utilizată opțiune de stocare sunt volumele. Acestea sunt plasate pe sistemul de fișiere gazdă și permit mai multor containere să partajeze și să scrie date în interiorul acestor volume.

Concluzie

Docker folosește un set de tehnologii de ultimă oră pentru a oferi utilizatorilor săi servicii eficiente de containerizare. Fără îndoială, în ultimii ani, Docker a început să câștige acțiune în rândul comunității de dezvoltatori și va continua să facă acest lucru în anii următori.

Datorită gamei largi de beneficii oferite de containere, cum ar fi eficiența resurselor, scalabilitatea etc., își asigură pe bună dreptate poziția în partea de sus a punții.

În acest articol, am discutat unele dintre cele mai esențiale concepte ale Docker, cum ar fi fluxul de lucru Docker, arhitectura acestuia și tehnologiile care stau la baza, mai multe obiecte Docker, cum ar fi containere, imagini, registre, rețele etc.

Acum sunteți pe drumul cel bun pentru a vă scufunda adânc în frumoasa lume a Docker Containers. Acum ar trebui să înțelegeți mai bine modul în care diferite resurse Docker lucrează împreună pentru a vă oferi o mulțime de funcții care vă vor permite să construiți, să implementați și să partajați aplicațiile fără probleme.

Aflați arhitectura Docker cu upGrad

Începeți călătoria pentru crearea aplicațiilor într-un ritm accelerat cu upGrad.

upGrad Education Pvt. Ltd. oferă un curs exclusiv de specializare în dezvoltare de software în DevOps, care îi face pe aspiranți gata să se absoarbă în marii giganți IT.

Repere ale cursului

Programul Executive PG al upGrad în specializarea în dezvoltare software în Big Data este un curs online atent conceput, separat în 12 luni.

În acest curriculum, veți

  • Obțineți acces exclusiv la conținutul Data Science și Machine Learning
  • Lucrați la proiecte și misiuni live
  • Obțineți un sprijin în carieră la 360 de grade
  • Învață zece limbaje și instrumente de programare
  • Obțineți mentorat dedicat studenților

Pregătiți-vă dezvoltarea de aplicații DevOps cu upGrad.

De ce să aștepți

Aplica azi!

Pregătiți-vă pentru o carieră a viitorului

Aplicați acum pentru masterat în inginerie software