Până acum am transformat serverul nostru într-o fortăreață securizată prin SSH și firewall. Mașina host (sistemul tău de operare Debian) este curată și stabilă. Dacă de acum încolo începem să instalăm baze de date, servere web sau librării de inteligență artificială direct pe ea, o să ajungem la clasica dramă din IT: „La mine pe laptop mergea, de ce pe server crapă?” sau „Am instalat o versiune nouă de Python și mi-a stricat jumătate din celelalte programe”.
Astăzi tăiem acest nod gordian. Introducem în scenă Docker, tehnologia care ne permite să rulăm fiecare aplicație complet izolată într-o cușcă separată, numită container.
1. Ce este Docker și de ce NU este o Mașină Virtuală?
Mulți începători confundă containerele Docker cu Mașinile Virtuale (VM-uri, cum e VirtualBox). Diferența de consum de resurse și viteză este uriașă:
-
Mașina Virtuală: Este ca și cum ai vrea să găzduiești un singur musafir și, în loc să-i dai o cameră, îi construiești o casă completă în curte, cu fundație, acoperiș, centrală termică și baie proprie. O mașină virtuală vine cu propriul ei sistem de operare complet, consumând gigabyți de RAM și mult procesor degeaba.
-
Containerul Docker: Este ca un container uriaș de pe un vapor de marfă. Toate containerele împart aceeași punte, aceeași ancoră și același motor (adică împart Kernel-ul sistemului tău host, Debian). Totuși, marfa din interiorul unui container nu se poate atinge niciodată de marfa din containerul vecin. Un container Docker pornește într-o secundă și consumă aproape zero resurse RAM în plus față de aplicația din el.
2. Sfânta Treime din Docker: Imagini, Containere și Volume
Ca să nu fii în ceață când auzi termenii ăștia în producție, gândește-te la ei așa:
-
Imaginea (Image): Este rețeta de la bunica (sau schița de fabrică). Este un fișier înghețat, gata făcut, care conține programul tău și toate librăriile de care are nevoie ca să ruleze. O descarci de pe internet o singură dată.
-
Containerul (Container): Este prăjitura făcută după rețetă. Este procesul viu, pornit pe serverul tău, care își face treaba în interiorul cuștii lui izolate. Poți porni 10 containere identice de pe o singură imagine.
-
Volumul (Volume): Este dulapul din afara cuștii. Containerele sunt efemere: dacă ștergi un container, tot ce era în el dispare. De aceea, pentru baze de date sau fișiere importante, creăm un „volum” – un dosar de pe mașina host pe care îl conectăm în container. Dacă containerul moare, datele tale rămân în siguranță pe Debian.
3. Ghid de Instalare Curată pe Debian 12
Nu vom instala Docker din depozitele standard ale Debian, pentru că acolo versiunile sunt adesea vechi. Vrem motorul oficial, direct de la sursă.
Conectează-te prin SSH pe serverul tău și execută următorii pași:
Pasul 1: Curățăm eventualele resturi vechi
sudo apt-get remove docker docker-engine docker.io containerd runc
Pasul 2: Instalăm uneltele necesare pentru descărcarea cheilor oficiale
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release -y
Pasul 3: Adăugăm cheia GPG oficială Docker pentru securitate
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Pasul 4: Adăugăm depozitul oficial Docker în lista sistemului
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Pasul 5: Instalarea Motorului Docker (Docker Engine) și Docker Compose
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
Pasul 6: Trucul de Sys-Admin. Rulăm Docker fără sudo
În mod normal, doar utilizatorul root are voie să pornească containere. Ca să nu scrii sudo la fiecare comandă Docker, adaugă utilizatorul tău în grupul de sistem dedicat:
sudo usermod -aG docker $USER
Important: Pentru ca această modificare să aibă efect, trebuie să dai un logout din terminal și să te reconectezi prin SSH:
exit
# și te reconectezi: ssh numele_tau@ip_server
4. Primul Test: Pornim un server web în 3 secunde
Hai să vedem magia Docker la lucru. Vrem să rulăm un container cu Nginx (unul dintre cele mai rapide servere web din lume). Nu instalăm nimic pe Debian, lăsăm Docker să facă tot:
docker run -d -p 8080:80 --name serverul_meu_test nginx
Ce înseamnă parametrii ăștia?
-
docker run-> Îi spune lui Docker să creeze și să pornească un container. -
-d-> Detached mode. Containerul rulează tăcut în fundal, eliberându-ți terminalul. -
-p 8080:80-> Maparea Porturilor. Îi spui așa: „Ghișeul 80 din interiorul containerului leagă-l de portul fizic 8080 al serverului meu Debian”. -
--name serverul_meu_test-> Îi dai un nume uman cuștii. -
nginx-> Numele imaginii de pe internet pe care vrei să o rulezi.
Docker va vedea că nu ai imaginea local, o va descărca în câteva secunde și o va porni instant.
Verificarea
Deschide browserul pe laptopul tău și accesează adresa IP a serverului tău urmată de portul 8080 (Exemplu: [http://192.168.1.100:8080](http://192.168.1.100:8080)). BAM! Vei vedea pagina oficială „Welcome to nginx!”.
Dacă vrei să vezi containerele care rulează în acest moment pe server, scrie:
docker ps
Dacă vrei să oprești și să ștergi cușca (fără să rămână nicio mizerie în sistem), rulezi:
docker stop serverul_meu_test
docker rm serverul_meu_test
Dacă rulezi din nou docker ps, vei vedea că serverul e curat ca lacrima. Nginx a dispărut complet, fără să lase fișiere uitate prin sistem.