Sari la conținut
← Docker pentru developeri
Progres curs 0 / 6 lecții (0%)

Ce rezolvă Docker

Lectură estimată: 4 minute

Estimare pentru text, la un ritm de 180 de cuvinte pe minut. Timpul pentru analizarea codului, exerciții și proiecte se adaugă separat și depinde de ritmul tău.

Problema pe care o vei rezolva: Containere cu date persistente

Mediu demonstrativ cu aplicație și bază de date, rețea internă și volum numit. Creează o înregistrare fictivă înainte de recrearea containerului aplicației.

Rezultatul urmărit

Scrie Dockerfile și compose.yaml, explică fiecare mount și port, apoi recreează aplicația. Verifică datele și conectivitatea fără a publica inutil portul bazei.

Cum recunoști o soluție corectă

Datele persistă în volum. Numele serviciului permite comunicarea internă. Parola nu este inclusă în imagine sau în repository. Pornirea procesului nu este singura dovadă că baza este pregătită.

Parcurge lecțiile în ordine și păstrează exercițiile în registrul descărcabil. Ultima lecție include atelierul de 40 de minute în care combini conceptele și testezi o variație a situației inițiale. Exemplele comerciale sunt fictive; nu reprezintă rezultate ale unor clienți.

Docker rezolvă problema „merge pe calculatorul meu". Un container împachetează aplicația împreună cu tot ce-i trebuie ca să ruleze — versiunea exactă de limbaj, bibliotecile, configurarea. Aceeași imagine rulează identic pe laptopul tău, pe cel al colegului, în CI și în producție.

Container vs. mașină virtuală

O mașină virtuală emulează un calculator întreg, cu propriul sistem de operare — grea, lentă la pornire. Un container împarte kernelul sistemului gazdă și izolează doar procesul și dependențele lui — pornește în secunde, ocupă puțin.

Concepte de bază

  • Imagine: șablonul, read-only. Conține sistemul de fișiere și configurarea aplicației.
  • Container: o instanță care rulează dintr-o imagine. Efemer — poate fi șters și recreat.
  • Volum: stocare persistentă, în afara ciclului de viață al containerului (baza de date, upload-uri).
  • Rețea: cum comunică containerele între ele și cu exteriorul.
  • Registry: unde se publică și se descarcă imagini (Docker Hub, GitHub Container Registry).

De ce contează pentru un developer

  • Onboarding: un coleg nou rulează `docker compose up` și are tot mediul, în minute.
  • Consistență: nimeni nu mai are „altă versiune de PHP".
  • Izolare: proiecte diferite cu versiuni diferite, fără conflicte pe mașina ta.
  • Paritate: dev seamănă cu producția.

Instalare

Docker Desktop pe Windows/Mac, Docker Engine pe Linux. Verifici cu `docker --version` și `docker run hello-world`.

Exercițiu

Instalează Docker. Rulează `docker run hello-world`, apoi `docker run -it ubuntu bash` — ești într-un container Ubuntu izolat. Rulează câteva comenzi, ieși cu `exit`, și observă cu `docker ps -a` că containerul s-a oprit.

Greșeli frecvente

  • Confunzi imaginea (șablon) cu containerul (instanță care rulează).
  • Te aștepți ca datele să persiste într-un container fără volum.
  • Crezi că Docker e o mașină virtuală — modelul e diferit.
  • Nu cureți niciodată imagini/containere vechi și umpli discul.

De reținut

  • Container = aplicația + mediul ei, izolate, reproductibile, ușoare.
  • Imagine (șablon) → container (instanță).
  • Volume pentru date persistente; rețele pentru comunicare.
  • Beneficiul principal: consistență între dev, CI și producție.

Pe scurt

Docker împachetează aplicația cu mediul ei. Un container pornește rapid, e izolat, și rulează la fel peste tot.

Containerul ca mediu de rulare, nu mașină completă

O imagine descrie sistemul de fișiere și configurația de pornire, iar containerul este o instanță de execuție. Containerele împart anumite componente ale gazdei și nu trebuie tratate automat ca mașini virtuale independente. Începe cu o comandă care nu expune porturi și nu montează date private. Verifică identitatea imaginii și versiunea folosită. Pentru reproductibilitate, un tag poate necesita fixare mai strictă după politica proiectului.

Exemplu de lucru

docker run --rm hello-world
docker image ls
docker ps -a
Întrebări: ce imagine a fost descărcată; ce proces a rulat; ce s-a păstrat după terminare?
Nu adăuga: --privileged sau montarea rădăcinii gazdei pentru un exemplu simplu.

Interpretarea rezultatului

--rm elimină containerul terminat, nu toate imaginile sau volumele. Docker necesită un mediu instalat și autorizat pe mașina de laborator. Accesul la daemon poate conferi drepturi importante asupra gazdei; nu îl distribui necontrolat.

Exercițiu de consolidare

Explică ce diferență observi între imaginea listată și containerul care nu mai rulează.

Aplicație practică

Sarcina

Compară mediul local al doi developeri.

Rezolvare orientativă și verificare

Notează runtime-ul, dependențele și serviciile care trebuie aliniate. Containerul oferă reproducibilitate, nu izolare perfectă.

Greșeală de evitat

Un container nu este o mașină virtuală completă.

Documentație și surse

Ți-a plăcut lecția? Continuă cursul complet

Ai citit o lecție gratuită. Celelalte lecții, aplicațiile practice și materialele se deblochează odată cu cursul.

169 lei

Plată unică, acces pe viață la toate cele 6 lecții.

Vezi ce conține cursul →

Folosim cookie-uri esențiale pentru funcționarea site-ului și, cu acordul tău, cookie-uri de analiză și publicitate. Partenerii noștri, inclusiv Google, pot folosi cookie-uri pentru a afișa reclame relevante. Detalii în Politica de cookie-uri.