Sari la conținutul principal

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 down
  • docker 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​

  1. De ce nu păstrăm datele importante în stratul read/write al containerului?
  2. Ce avantaj oferă un build multi-stage?
  3. De ce poate API-ul folosi host-ul db?
  4. Care este diferența dintre EXPOSE și --publish?
  5. 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
warning

Evitați comenzile globale de tip docker system prune în timpul laboratorului. Ele pot afecta și alte proiecte locale.