Recapitulare și checkpoint-uri
Această secțiune recapitulează laboratorul. Nu este nevoie să scrieți cod, Dockerfile sau configurații noi.
1. Imagini și containere
Rulați:
docker image ls
docker container ls -a
Verificați că puteți identifica:
- o imagine care poate fi folosită pentru mai multe containere
- un container pornit și unul oprit, dacă există
- tag-ul unei imagini
- diferența dintre image ID și container ID
2. Imaginea Ticketing API
docker image inspect --format '{{.Config.User}}' ticketing-api:lab1
docker image history ticketing-api:lab1
Rezultatul trebuie să confirme utilizatorul nonroot:nonroot și să arate straturile imaginii. Explicați de ce imaginea finală nu conține toolchain-ul Go folosit la compilare.
3. Aplicația și portul publicat
Dacă serviciile Compose rulează:
docker compose ps
curl -sS http://localhost:8080/health
curl -sS http://localhost:8080/tickets
Identificați diferența dintre portul containerului și portul gazdei în output-ul docker compose ps.
4. Networking
docker network ls
docker compose logs api
Din configurație și loguri, identificați:
- numele folosit de API pentru a contacta baza de date
- motivul pentru care portul PostgreSQL nu trebuie publicat pe gazdă
- rolul healthcheck-ului
5. Persistența
docker volume ls
Identificați volumul proiectului și explicați ce se întâmplă cu el în fiecare caz:
docker compose downdocker compose down --volumes- recrearea containerului
db
6. Tag și registru
docker image ls --digests
Verificați dacă tag-urile ticketing-api:lab1 și ticketing-api:v1 indică același image ID. Explicați de ce un digest este mai potrivit atunci când avem nevoie de o referință imuabilă.
Opțional: inspectarea vulnerabilităților
Dacă instalarea voastră include Docker Scout, puteți rula:
docker scout quickview ticketing-api:lab1
Rezultatele unui scanner trebuie interpretate în context: severitatea, componenta afectată, existența unei remedieri și modul în care componenta este folosită contează toate.
Întrebări de final
- De ce nu păstrăm datele importante în stratul read/write al containerului?
- Ce avantaj oferă un build multi-stage?
- De ce poate API-ul folosi host-ul
db? - Care este diferența dintre
EXPOSEși--publish? - Ce resursă șterge suplimentar opțiunea
--volumes?
Curățarea mediului
Ștergeți containerele, rețeaua și volumul create de proiect:
docker compose down --volumes --remove-orphans
Dacă au rămas containere create separat, listați-le și eliminați-le explicit:
docker container ls -a
docker container rm --force <CONTAINER>
Imaginile nu sunt șterse automat. Le puteți păstra pentru reutilizare și le puteți vedea cu:
docker image ls
Evitați comenzile globale de tip docker system prune în timpul laboratorului. Ele pot afecta și alte proiecte locale.