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șireInspecț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, liveInteracț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 containerOprire și ștergere
docker stop web
docker start web
docker restart web
docker rm web # șterge containerul (oprit)
docker rmi nginx # șterge imagineaCurăț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 acumO 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
- Get started with Docker — Docker
Ț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 →