← Toate articolele

Cum sa instalezi Docker pe Ubuntu

Ghid pas cu pas pentru instalarea Docker pe Ubuntu, cu configurare firewall UFW, securitate si comenzi utile pentru administrare.

Cum sa instalezi Docker pe Ubuntu

Daca ai un VPS sau un server dedicat cu Ubuntu si vrei sa rulezi aplicatii in containere, Docker este alegerea directa. Problema e ca instalarea “clasica” prin repository-ul oficial are vreo zece pasi si presupune sa adaugi chei GPG, sa configurezi surse APT si sa te asiguri ca totul e corect. Exista o cale mai scurta.

In ghidul asta parcurgem instalarea Docker pe Ubuntu folosind scriptul oficial, configurarea firewall-ului UFW (pentru ca Docker si UFW nu se inteleg din prima), adaugarea utilizatorului in grupul docker si cateva verificari de securitate pe care merita sa le faci inainte sa pui ceva in productie.

Versiuni testate

Pasii de mai jos functioneaza pe Ubuntu 22.04 LTS si Ubuntu 24.04 LTS. Scriptul oficial suporta si alte distributii bazate pe Debian, dar recomandarile de firewall sunt specifice UFW.

Ce ai nevoie inainte sa incepi

  • Un server sau VPS cu Ubuntu 22.04 sau 24.04
  • Acces SSH cu un utilizator care are drepturi sudo
  • Conexiune la internet pe server
  • Minim 1 GB RAM (2 GB recomandat daca rulezi mai multe containere)

Daca ai deja o versiune veche de Docker instalata din repository-ul Ubuntu (pachetul docker.io), dezinstaleaz-o ca sa nu apara conflicte:

sudo apt remove docker docker.io containerd runc -y

Instalarea Docker cu scriptul oficial

Cea mai rapida metoda este scriptul de la get.docker.com. Descarca si ruleaza ultima versiune de Docker Engine, CLI si containerd:

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

Scriptul detecteaza automat distributia si versiunea, adauga repository-ul oficial Docker si instaleaza pachetele necesare. Dureaza de obicei sub un minut pe o conexiune decenta.

Dupa ce se termina, verifica instalarea:

docker --version

Ar trebui sa vezi ceva de genul Docker version 27.x.x. Ca sa testezi ca totul merge end-to-end:

sudo docker run hello-world

Daca primesti mesajul “Hello from Docker!”, instalarea e completa.

Atentie la productie

Scriptul de la get.docker.com este recomandat pentru medii de test si dezvoltare. Pentru servere de productie, Docker sugereaza instalarea manuala prin repository, ca sa ai control deplin asupra versiunilor. In practica, multi il folosesc si in productie fara probleme, dar trebuie sa stii ce faci cand vine vorba de update-uri.

Adaugarea utilizatorului in grupul docker

Implicit, Docker cere sudo pentru fiecare comanda. Ca sa eviti asta, adauga-ti utilizatorul in grupul docker:

sudo usermod -aG docker $USER

Dupa comanda asta, deconecteaza-te si reconecteaza-te la SSH (sau ruleaza newgrp docker) ca sa se aplice permisiunile. Testeaza fara sudo:

docker ps

Daca nu primesti eroare de permisiuni, esti gata.

Nota de securitate

Accesul la grupul docker este echivalent cu acces root pe masina. Nu adauga utilizatori in care nu ai incredere.

Configurarea firewall-ului UFW pentru Docker

Aici multi se impiedica. Docker manipuleaza direct regulile iptables si, implicit, ocoleste UFW. Asta inseamna ca porturile expuse prin docker run -p sunt accesibile din exterior chiar daca UFW le blocheaza.

Verificarea problemei

Poti testa rapid. Porneste un container cu un port expus:

docker run -d -p 8080:80 nginx

Apoi verifica daca portul 8080 e accesibil din exterior (de pe alt calculator):

curl http://IP-UL-TAU:8080

Daca primesti raspuns de la Nginx desi UFW blocheaza portul 8080, ai confirmat problema.

Solutia: dezactiveaza manipularea iptables de catre Docker

Creeaza sau editeaza fisierul /etc/docker/daemon.json:

sudo nano /etc/docker/daemon.json

Adauga aceasta configurare:

{
  "iptables": false
}

Restarteaza Docker:

sudo systemctl restart docker

Dupa aceasta modificare, Docker nu mai creeaza reguli iptables automat. Porturile containerelor nu mai sunt expuse direct in exterior, iar UFW preia controlul complet.

Reguli UFW de care ai nevoie

Dupa dezactivarea manipularii iptables, trebuie sa deschizi manual porturile necesare in UFW:

# SSH (obligatoriu, altfel pierzi accesul)
sudo ufw allow 22/tcp

# HTTP si HTTPS (daca ai containere web)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Activeaza UFW daca nu este deja activ
sudo ufw enable

# Verifica regulile
sudo ufw status verbose

Nu uita de SSH

Inainte sa activezi UFW, asigura-te ca ai regula pentru portul SSH (implicit 22). Altfel ramai blocat in afara serverului.

Alternativa: limiteaza binding-ul la localhost

Daca nu vrei sa dezactivezi iptables complet, poti lega containerele doar la interfata locala. In loc de -p 8080:80, foloseste:

docker run -d -p 127.0.0.1:8080:80 nginx

Asa, portul 8080 raspunde doar pe localhost. Traficul extern trece prin reverse proxy (Nginx, Caddy, Traefik) unde controlezi tu accesul.

Instalarea Docker Compose

Docker Compose vine inclus in versiunile recente ca plugin. Verifica daca il ai deja:

docker compose version

Daca comanda merge, ai Docker Compose v2 instalat ca plugin. Daca nu, instaleaza-l manual:

sudo apt install docker-compose-plugin -y

Testeaza din nou:

docker compose version

Verificari de securitate post-instalare

Dupa ce ai Docker functional, merita sa parcurgi cateva verificari:

Comenzi utile de zi cu zi

Un mic cheat sheet ca sa nu cauti de fiecare data:

# Vezi containerele active
docker ps

# Vezi toate containerele (inclusiv oprite)
docker ps -a

# Opreste un container
docker stop <container_id>

# Sterge containerele oprite
docker container prune

# Sterge imaginile nefolosite
docker image prune -a

# Vezi cat spatiu ocupa Docker
docker system df

# Curatare completa (containere oprite, imagini, volume, retele nefolosite)
docker system prune -a --volumes

Spatiu pe disc

Docker acumuleaza imagini si volume in timp. Pe un VPS cu 20-40 GB, ruleaza docker system df lunar si curata ce nu mai folosesti. O imagine nefolosita poate avea si 1-2 GB.

Configurarea Docker sa porneasca la boot

Docker ar trebui sa porneasca automat dupa instalarea prin scriptul oficial, dar merita verificat:

sudo systemctl is-enabled docker

Daca raspunsul nu este enabled:

sudo systemctl enable docker
sudo systemctl enable containerd

Ce urmeaza dupa instalare

Odata ce ai Docker functional si firewall-ul configurat, poti:

  • rula aplicatii web in containere (WordPress, Ghost, aplicatii Node.js)
  • configura un reverse proxy cu Traefik sau Nginx Proxy Manager
  • folosi Docker Compose pentru stive multi-container
  • automatiza deployment-ul cu CI/CD

Daca ai nevoie de ajutor cu configurarea serverului, containere Docker sau administrare VPS, echipa BitDoze lucreaza cu aceste tehnologii zilnic.

Cere o consultatie
Docker Desktop vs Docker Engine: care e diferenta?

Docker Desktop este aplicatia cu interfata grafica pentru Windows si macOS, care include si o masina virtuala Linux in spate. Docker Engine este varianta CLI pentru servere Linux, fara interfata grafica. Pe un VPS cu Ubuntu, instalezi Docker Engine, nu Docker Desktop.

Pot folosi Docker pe un VPS cu 512 MB RAM?

Tehnic da, dar nu e practic. Docker Engine ocupa cam 100-200 MB RAM la repaus, iar fiecare container adauga la consum. Cu 512 MB ai loc pentru un container mic si atat. Recomandarea minima e 1 GB, iar 2 GB iti ofera confort real.

Scriptul get-docker.sh e sigur?

Scriptul este mentinut oficial de Docker Inc. si descarca pachetele din repository-ul lor. Poti citi codul sursa inainte sa-l rulezi cu cat get-docker.sh. Riscul principal e ca rulezi un script de pe internet cu drepturi root, asa ca verifica intotdeauna sursa.