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

Imagini și containere

Lectură estimată: 3 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.

O imagine se construiește din straturi și e imutabilă. Un container e imaginea „pornită", cu un strat scriibil deasupra. Lecția asta acoperă comenzile de zi cu zi: rulare, listare, log-uri, intrare în container, oprire, curățenie.

Rulare

docker run nginx                      # rulează, atașat la terminal
docker run -d nginx                   # detașat (în fundal)
docker run -d -p 8080:80 nginx        # mapează portul gazdă 8080 -> 80 din container
docker run -d --name web nginx        # cu un nume
docker run --rm -it alpine sh         # interactiv, șters la ieșire

Inspecție

docker ps                # containere care rulează
docker ps -a             # toate, inclusiv oprite
docker images            # imagini locale
docker logs web          # log-urile unui container
docker logs -f web       # live
docker stats             # consum de resurse, live

Interacțiune

docker exec -it web bash       # deschide un shell într-un container care rulează
docker exec web ls /etc       # rulează o comandă și ieși
docker cp fisier.txt web:/tmp/  # copiază fișiere în/din container

Oprire și ștergere

docker stop web
docker start web
docker restart web
docker rm web                 # șterge containerul (oprit)
docker rmi nginx              # șterge imaginea

Curățenie

docker system df              # cât spațiu ocupă Docker
docker container prune        # șterge containerele oprite
docker image prune            # imagini fără tag
docker system prune -a        # AGRESIV: tot ce nu e folosit acum

O bază de date de dezvoltare, într-o comandă

docker run -d --name pg-dev \
  -e POSTGRES_PASSWORD=secret \
  -e POSTGRES_DB=app \
  -p 5432:5432 \
  -v pg_data:/var/lib/postgresql/data \
  postgres:16

# aplicația se conectează la localhost:5432
# datele persistă în volumul pg_data chiar dacă ștergi containerul

Exercițiu

Rulează un container `nginx` detașat, cu portul mapat la 8080 și un nume. Deschide `localhost:8080` în browser. Intră în container cu `docker exec -it`, uită-te în `/usr/share/nginx/html`. Vezi log-urile. Oprește-l și șterge-l.

Greșeli frecvente

  • Uiți `-p` și nu poți accesa serviciul din container.
  • Rulezi containere fără `--name` și le identifici greu.
  • Nu folosești `--rm` pentru containere de o singură dată și se adună.
  • `docker system prune -a` fără să realizezi că șterge imagini pe care le mai vrei.

De reținut

  • docker run cu -d (fundal), -p (porturi), --name, -v (volume), -e (env).
  • ps / logs / stats pentru inspecție; exec -it pentru shell.
  • stop / start / rm / rmi pentru ciclul de viață.
  • prune pentru curățenie — cu atenție la `-a`.

Pe scurt

Comenzile Docker de zi cu zi: run cu opțiunile potrivite, exec pentru a intra, logs pentru depanare, prune pentru curățenie.

Imagine fixată și proces de container observabil

Pornește un container cu nume și port local explicit, apoi verifică logurile și starea. Nu expune un serviciu pe toate interfețele dacă este doar pentru laborator. O imagine descărcată poate fi actualizată sub același tag; pentru reproducere strictă, verifică digestul. Nu folosi latest ca dovadă că rulezi exact aceeași versiune ca alt coleg. Datele scrise în stratul containerului nu sunt un mecanism de persistență pe termen lung.

Exemplu de lucru

docker run -d --name web-demo -p 127.0.0.1:8088:80 nginx:stable-alpine
docker ps
docker logs web-demo
Adresă: http://127.0.0.1:8088/
Oprire controlată a containerului de laborator: docker stop web-demo
Nu aplica operații globale de prune pentru acest exercițiu.

Interpretarea rezultatului

Portul gazdei 8088 este mapat la portul 80 din container. Bind-ul 127.0.0.1 limitează accesul local. Statusul running nu garantează conținutul corect; verifică și răspunsul HTTP. Pentru un proiect reproductibil, înregistrează digestul imaginii efectiv folosite.

Exercițiu de consolidare

Pornește al doilea container cu alt nume și port, apoi identifică separat logurile fiecăruia.

Aplicație practică

Sarcina

Rulează un container demonstrativ și șterge-l după test.

Rezolvare orientativă și verificare

Observă diferența dintre imagine și instanță. Datele create în stratul containerului pot dispărea la recreare.

Greșeală de evitat

Nu păstra singura copie a bazei în stratul efemer.

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.