Laboratorul 1 - Docker
În acest laborator urmărim traseul complet al unei aplicații containerizate: pornim de la o imagine existentă, construim propria imagine pentru Ticketing API, rulăm aplicația local și apoi trecem la o configurație cu două servicii și date persistente.
Laboratorul este un tutorial ghidat. Codul aplicației, Dockerfile și fișierul docker-compose.yml sunt deja pregătite; nu este nevoie să scrieți cod sau configurații de la zero.
Obiective
La finalul laboratorului veți putea:
- să explicați diferența dintre imagine, container și registru
- să rulați, inspectați și opriți containere
- să construiți o imagine folosind un
Dockerfilemulti-stage - să explicați rolul tag-urilor și al digest-urilor
- să rulați Ticketing API în memorie și împreună cu PostgreSQL
- să explicați rețeaua implicită creată de Docker Compose
- să verificați persistența datelor într-un volum Docker
Aplicația folosită
Vom folosi același exemplu pe tot parcursul laboratorului: Ticketing API, un API REST simplu scris în Go pentru gestionarea tichetelor.
git clone https://github.com/Cloud-Computing-UPB/lab1.git
cd lab1
Nu este necesară instalarea locală a limbajului Go: compilarea se face în timpul construirii imaginii Docker.
Convenții
- comenzile sunt prezentate pentru Bash, WSL sau un terminal Linux/macOS
- în PowerShell, folosiți
curl.exeîn loc de aliasulcurl, dacă este necesar - rulați comenzile din rădăcina repository-ului, exceptând cazurile în care este menționat altceva
- valorile scrise între
<și>sunt placeholdere și trebuie înlocuite
📄️ Instalare
Instalarea Docker trebuie finalizată înainte de laborator, deoarece descărcarea componentelor și repornirea sistemului pot dura.
📄️ Verificarea instalării
Rulați verificările de mai jos înainte de laborator.
📄️ Imagini, containere și registre
Modelul mental
📄️ Primul container
Vom folosi o imagine Alpine cu versiunea specificată explicit, pentru ca rezultatul să fie reproductibil.
📄️ Aplicația Ticketing API
În restul laboratorului folosim repository-ul Cloud-Computing-UPB/lab1.
📄️ Construirea și rularea imaginii
Vom construi imaginea aplicației direct din fișierele existente în repository.
📄️ Tag, digest și registru
O imagine construită local poate fi etichetată și publicată într-un registru pentru a fi folosită pe alte sisteme.
📄️ Docker Compose și networking
Până acum am rulat API-ul singur, cu stocare în memorie. În continuare folosim Docker Compose pentru a porni aplicația împreună cu PostgreSQL.
📄️ Persistența cu volume
Sistemul de fișiere read/write al unui container este legat de ciclul său de viață. Datele care trebuie să supraviețuiască recreării containerului sunt păstrate în volume sau bind mounts.
📄️ Recapitulare și checkpoint-uri
Această secțiune recapitulează laboratorul. Nu este nevoie să scrieți cod, Dockerfile sau configurații noi.
📄️ Comenzi utile
Această pagină este o fișă de referință. Pentru toate opțiunile unei comenzi folosiți --help sau documentația oficială Docker.