docker wait în Docker

Containere Docker 1.0+

Așteaptă oprirea unuia sau mai multor containere și afișează codul de ieșire al fiecăruia.

Sintaxă comandă
docker wait <container> [<container>...]

Ce face docker wait

docker wait blochează terminalul până când containerul se oprește, apoi afișează codul lui de ieșire: 0 pentru succes, altă valoare pentru eroare (de exemplu 137 când a fost oprit cu SIGKILL, adesea din lipsă de memorie).

Este utilă în scripturi și în CI: pornești un container care rulează teste sau o migrare cu -d, faci alte lucruri, apoi aștepți rezultatul și decizi ce urmează după codul primit. Cu mai multe containere, afișează câte un cod pe linie, în ordinea dată.

Parametri

Parametru Descriere
&lt;container&gt;... Unul sau mai multe containere de așteptat.

Exemple

Exemplul 1: Migrarea bazei de date într-un script de deploy

Scriptul continuă doar dacă migrarea s-a terminat cu codul 0.

docker run -d --name migrare --network magazin magazin-api:1.4 npm run migrate
cod=$(docker wait migrare)
echo "Migrarea s-a terminat cu codul $cod"
[ "$cod" -eq 0 ] || { docker logs migrare; exit 1; }

Ieșire în terminal

Migrarea s-a terminat cu codul 0

Exemplul 2: Codurile de ieșire pentru mai multe containere

Primul container a reușit, al doilea a fost oprit de lipsa memoriei (137 = 128 + 9, adică SIGKILL).

docker wait teste-unitare teste-integrare

Ieșire în terminal

0
137

Greșeli frecvente

  • Folosirea docker wait pe un serviciu care nu se oprește singur (server web): comanda așteaptă la nesfârșit.
  • Pornirea containerului cu --rm și apoi docker logs după docker wait: containerul și jurnalele lui au fost deja șterse. Șterge-l manual după ce ai citit jurnalele.

Comenzi înrudite

  • docker create: Creează un container cu toate setările lui, fără să-l pornească; îl pornești mai târziu cu docker start.
  • docker attach: Conectează terminalul tău la intrarea, ieșirea și erorile procesului principal al unui container care rulează.
  • docker pause / docker unpause: Îngheață toate procesele unui container (fără să le oprească) și le reia exact din același punct.