Ce face docker pause / docker unpause
docker pause suspendă toate procesele din container folosind mecanismul freezer din cgroups pe Linux. Procesele nu primesc niciun semnal și nu știu că au fost oprite: rămân în memorie, dar nu mai primesc timp de procesor. docker unpause le reia din același punct.
Diferența față de docker stop: la stop, procesul se termină și pornește de la zero la docker start; la pause, starea din memorie se păstrează. E util pentru a elibera temporar procesorul, pentru a face o copie consistentă a fișierelor sau în teste. Un container în pauză apare în docker ps cu starea (Paused).
Parametri
| Parametru | Descriere |
|---|---|
docker pause CONTAINER |
Suspendă toate procesele containerului. |
docker unpause CONTAINER |
Reia procesele suspendate. |
docker ps --filter status=paused |
Listează containerele aflate în pauză. |
Exemple
Exemplul 1: Pauză pentru un job care consumă procesorul
Raportul lunar ocupă procesorul în timpul zilei; îl punem în pauză și îl reluăm seara.
docker pause raport-lunar
docker ps --filter name=raport-lunar --format '{{.Names}}\t{{.Status}}'
docker unpause raport-lunar
docker ps --filter name=raport-lunar --format '{{.Names}}\t{{.Status}}'
Ieșire în terminal
raport-lunar
raport-lunar Up 47 minutes (Paused)
raport-lunar
raport-lunar Up 47 minutes
Exemplul 2: Comenzile nu merg într-un container în pauză
Nici docker exec nu poate porni procese noi cât timp containerul este înghețat.
docker pause raport-lunar
docker exec raport-lunar ls
Ieșire în terminal
raport-lunar
Error response from daemon: Container 6e1f3a9c2b7d4e8f0a5c1b3d7e9f2a4c6b8d0e1f3a5c7b9d2e4f6a8c0b1d3e5f is paused, unpause the container before exec
Greșeli frecvente
- Folosirea lui
pauseca să eliberezi memorie: procesele înghețate își păstrează toată memoria. Pentru a o elibera, oprește containerul. - Lăsarea în pauză a unui serviciu din spatele unui load balancer: conexiunile nu sunt refuzate, ci rămân agățate până la timeout.
Comenzi înrudite
docker update: Modifică din mers limitele de CPU și memorie sau politica de repornire a unui container, fără să-l recreezi.docker wait: Așteaptă oprirea unuia sau mai multor containere și afișează codul de ieșire al fiecăruia.docker attach: Conectează terminalul tău la intrarea, ieșirea și erorile procesului principal al unui container care rulează.