Ce face docker run
Comanda docker run creează un container nou dintr-o imagine și îl pornește. Practic combină docker create și docker start; dacă imaginea nu există local, o descarcă automat cu docker pull.
Fără opțiuni, containerul rulează în prim-plan, iar ieșirea lui apare în terminal. Cu -d rulează în fundal și comanda afișează doar ID-ul complet al containerului. Comanda și argumentele de după numele imaginii înlocuiesc instrucțiunea CMD din imagine.
Fiecare docker run creează un container nou. Pentru a reporni un container existent folosește docker start; altfel vei acumula multe containere oprite (vezi docker ps -a).
Opțiuni și argumente
| Opțiune / Parametru | Descriere |
|---|---|
-d, --detach |
Rulează containerul în fundal și afișează ID-ul lui. |
--name nume |
Dă un nume containerului; altfel Docker generează unul aleator (de exemplu quirky_hopper). |
-p gazdă:container |
Publică un port: -p 8080:80 face portul 80 din container accesibil pe portul 8080 al gazdei. |
-e, --env CHEIE=valoare |
Setează o variabilă de mediu; --env-file .env le citește dintr-un fișier. |
-v, --volume sursă:destinație |
Montează un volum sau un director al gazdei în container. |
-it |
Combinația -i (stdin deschis) și -t (pseudo-terminal), pentru sesiuni interactive. |
--rm |
Șterge automat containerul când se oprește. |
--restart politică |
Politica de repornire: no, on-failure, unless-stopped, always. |
Exemple
Exemplul 1: Pornirea unui server Nginx în fundal
Mapăm portul 8080 al gazdei pe portul 80 al containerului. Site-ul devine accesibil la http://localhost:8080.
docker run -d --name web -p 8080:80 --restart unless-stopped nginx:1.27
Ieșire în terminal
9f3c2a1b7e6d4c5b8a9f0e1d2c3b4a5f6e7d8c9b0a1f2e3d4c5b6a7f8e9d0c1b
Exemplul 2: Un shell interactiv temporar
Cu -it --rm obții un shell într-un container care dispare la ieșire, ideal pentru teste rapide.
docker run -it --rm ubuntu:24.04 bash
Ieșire în terminal
root@4b7e2d9c1a3f:/# cat /etc/os-release | head -2
PRETTY_NAME="Ubuntu 24.04.1 LTS"
NAME="Ubuntu"
root@4b7e2d9c1a3f:/# exit
exit
Exemplul 3: Bază de date cu variabile de mediu și volum
Datele PostgreSQL sunt păstrate în volumul numit pgdata, deci supraviețuiesc ștergerii containerului.
docker run -d --name db \
-e POSTGRES_PASSWORD=secret \
-e POSTGRES_DB=app \
-v pgdata:/var/lib/postgresql/data \
-p 5432:5432 \
postgres:16
Ieșire în terminal
c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2
Greșeli frecvente
- Plasarea opțiunilor după numele imaginii: în
docker run nginx -p 8080:80,-p 8080:80este transmis ca argument către Nginx, nu către Docker. Opțiunile Docker se pun înaintea imaginii. - Inversarea porturilor: formatul este
-p PORT_GAZDĂ:PORT_CONTAINER. - Eroarea
Conflict. The container name "/web" is already in use: există deja un container (chiar oprit) cu acel nume. Șterge-l cudocker rm websau pornește-l cudocker start web.
Comenzi înrudite
docker ps: Listează containerele care rulează (sau toate, cu -a).docker exec: Rulează o comandă suplimentară într-un container care rulează deja.docker logs: Afișează ieșirea standard (stdout și stderr) a unui container.docker run -v / --mount: Atașează volume, directoare de pe gazdă (bind mounts) sau memorie RAM (tmpfs) la un container.