docker start / docker stop în Docker

Containere Docker 1.0+

Pornește un container existent oprit sau oprește grațios un container care rulează.

Sintaxă comandă
docker start [opțiuni] container... | docker stop [opțiuni] container...

Ce face docker start / docker stop

Comanda docker stop trimite procesului principal din container semnalul SIGTERM (sau semnalul definit prin STOPSIGNAL), îi lasă timp să se închidă curat și, dacă nu se oprește în 10 secunde, îl omoară cu SIGKILL. Containerul trece în starea Exited, dar fișierele și configurația lui rămân.

Comanda docker start repornește un container existent cu exact aceeași configurație cu care a fost creat (porturi, volume, variabile de mediu). Nu poți schimba aceste opțiuni la pornire: pentru asta trebuie să creezi un container nou cu docker run.

Ambele comenzi acceptă mai multe containere deodată, identificate prin nume sau ID (ajunge un prefix unic al ID-ului) și afișează numele fiecărui container procesat.

Opțiuni și argumente

Opțiune / Parametru Descriere
container Numele sau ID-ul (complet ori prefix unic) unuia sau mai multor containere.
stop -t, --timeout N Câte secunde se așteaptă după SIGTERM înainte de SIGKILL (implicit 10).
stop -s, --signal Alt semnal decât cel implicit, de exemplu SIGINT (Docker 23+).
start -a, --attach Atașează terminalul la ieșirea containerului.
start -i, --interactive Atașează stdin-ul; împreună cu -a reia o sesiune interactivă.
docker kill Comandă înrudită care trimite imediat SIGKILL, fără oprire grațioasă.

Exemple

Exemplul 1: Oprirea și repornirea unui container

Ambele comenzi afișează numele containerului procesat.

docker stop web
docker start web

Ieșire în terminal

web
web

Exemplul 2: Oprirea tuturor containerelor care rulează

Folosim docker ps -q pentru a obține lista de ID-uri.

docker stop $(docker ps -q)

Ieșire în terminal

9f3c2a1b7e6d
c1d2e3f4a5b6
7a8b9c0d1e2f

Exemplul 3: Timp mai lung de oprire pentru o bază de date

Îi dăm lui PostgreSQL 60 de secunde să scrie datele pe disc înainte de oprirea forțată.

docker stop -t 60 db

Ieșire în terminal

db

Greșeli frecvente

  • Un container care se oprește mereu exact după 10 secunde: procesul principal nu primește sau ignoră SIGTERM. Cauza tipică este forma shell a lui CMD/ENTRYPOINT (procesul rulează sub /bin/sh -c, care nu transmite semnalul). Folosește forma exec, cu paranteze drepte.
  • Așteptarea ca docker start să aplice opțiuni noi (alt port, alt volum). Configurația este fixată la crearea containerului.

Comenzi înrudite

  • docker restart: Oprește și pornește din nou unul sau mai multe containere.
  • docker run: Creează și pornește un container nou dintr-o imagine.
  • docker ps: Listează containerele care rulează (sau toate, cu -a).
  • docker rm: Șterge unul sau mai multe containere (implicit doar pe cele oprite).