Capitol gratuit

Docker - concepte de bază (imagini, containere)

Docker este format din câteva componente care lucrează împreună: un daemon (procesul de fundal care gestionează containerele), un client (comanda docker pe...

Introducere

Docker este format din câteva componente care lucrează împreună: un daemon (procesul de fundal care gestionează containerele), un client (comanda docker pe care o folosiți în terminal) și o API REST prin care clientul comunică cu daemonul.

Imagine versus container

Cea mai importantă distincție în Docker este între imagine și container:

  • Imaginea este un șablon read-only, care conține sistemul de fișiere al aplicației: cod, librării, configurare. Se construiește o singură dată dintr-un fișier numit Dockerfile.
  • Containerul este o instanță în execuție a unei imagini. La fel cum dintr-o clasă (imaginea) puteți crea mai multe obiecte (containerele), din aceeași imagine puteți porni oricâte containere identice, izolate unul de celălalt.

Analogie utilă

Imaginea Docker este ca o rețetă de gătit tipărită, care nu se schimbă. Containerul este mâncarea gătită conform rețetei - puteți găti aceeași rețetă de câte ori doriți, obținând de fiecare dată un rezultat identic, iar dacă terminați o porție (opriți containerul), rețeta rămâne neschimbată pentru următoarea gătire.

Structura pe straturi (layers)

O imagine Docker nu este un singur fișier, ci o succesiune de straturi (layers) suprapuse, fiecare corespunzând unei instrucțiuni din Dockerfile. Docker folosește un sistem de fișiere de tip union, care combină toate straturile într-un singur sistem de fișiere unificat la rulare.

Straturile sunt cache-uite și reutilizate: dacă un strat nu s-a schimbat față de build-ul anterior, Docker îl refolosește direct, fără să-l reconstruiască. Acest mecanism este esențial pentru viteza build-urilor, subiect detaliat în capitolul despre Dockerfile.

Glosar de termeni esențiali

TermenDescriere
Image (imagine)Șablon read-only din care se creează containere
ContainerInstanță în execuție a unei imagini, izolată de restul sistemului
DockerfileFișier text cu instrucțiuni pentru construirea unei imagini
RegistryServer unde sunt stocate și distribuite imaginile (ex: Docker Hub)
TagEtichetă a unei versiuni de imagine (ex: nginx:1.27)
VolumeMecanism pentru persistența datelor dincolo de ciclul de viață al containerului
NetworkRețea virtuală prin care containerele comunică între ele
Docker ComposeInstrument pentru definirea și rularea aplicațiilor cu mai multe containere

Arhitectura client-server

Când scrieți docker run nginx în terminal, se întâmplă următoarele:

  1. Clientul docker trimite cererea către daemonul Docker (dockerd) prin API
  2. Daemonul verifică dacă imaginea nginx există local
  3. Dacă nu există, o descarcă automat de pe Docker Hub (registry-ul implicit)
  4. Daemonul creează un container nou pornind de la imagine și îl pornește
  5. Ieșirea (logs) containerului este transmisă înapoi către client
Sfat: Clientul și daemonul pot rula pe mașini diferite. Din acest motiv, Docker poate gestiona containere de la distanță, iar instrumente precum docker context permit comutarea rapidă între un daemon local și unul de pe un server VPS.

Continuați cu restul cursului

Acesta este capitolul 2 din cele 14 ale cursului, cu 5 lecții din 86. Cumpărați cursul și parcurgeți tot conținutul în cont, cu progres salvat, test final și certificat.

Cumpărați cursul la 130 €