Ce face docker update
Dacă un container consumă prea mult sau are nevoie de mai multe resurse, docker update schimbă limitele pe loc, fără oprire. Se pot modifica limitele de CPU (--cpus), memorie (--memory, --memory-swap), numărul maxim de procese (--pids-limit) și politica de repornire (--restart).
Nu se pot schimba imaginea, porturile, volumele sau variabilele de mediu: pentru acestea containerul trebuie recreat. Când mărești --memory peste valoarea curentă a lui --memory-swap, trebuie să le dai pe amândouă, altfel comanda refuză modificarea.
Parametri
| Parametru | Descriere |
|---|---|
--cpus N |
Numărul de procesoare (poate fi zecimal, de exemplu 1.5). |
-m, --memory |
Limita de memorie (512m, 2g). |
--memory-swap |
Memorie plus swap; -1 înseamnă swap nelimitat. |
--restart |
Politica de repornire: no, on-failure[:N], always, unless-stopped. |
--pids-limit |
Numărul maxim de procese din container. |
--cpu-shares |
Pondere relativă de CPU față de alte containere (implicit 1024). |
Exemple
Exemplul 1: Mai multă memorie și CPU pentru un serviciu încărcat
Comanda afișează numele containerelor modificate; verificăm cu docker stats.
docker update --cpus 2 --memory 1g --memory-swap 1g magazin-api
docker stats --no-stream --format '{{.Name}}\t{{.MemUsage}}' magazin-api
Ieșire în terminal
magazin-api
magazin-api 214.5MiB / 1GiB
Exemplul 2: Repornire automată pentru containere existente
Containerele pornite fără --restart nu revin după repornirea serverului. Le schimbăm politica pe toate o dată.
docker update --restart unless-stopped redis-sesiuni magazin-api
docker inspect -f '{{.Name}} {{.HostConfig.RestartPolicy.Name}}' redis-sesiuni magazin-api
Ieșire în terminal
redis-sesiuni
magazin-api
/redis-sesiuni unless-stopped
/magazin-api unless-stopped
Greșeli frecvente
- Considerarea modificării ca permanentă pentru Compose: la următorul
docker compose upcare recreează containerul, se aplică din nou valorile dincompose.yaml. Actualizează și fișierul. - Încercarea de a schimba porturile sau variabilele de mediu cu
docker update: nu există astfel de opțiuni; recreează containerul.
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 pause / docker unpause: Îngheață toate procesele unui container (fără să le oprească) și le reia exact din același punct.docker rename: Schimbă numele unui container existent, pornit sau oprit, fără să-l recreezi.