docker update în Docker

Containere Docker 1.10+

Modifică din mers limitele de CPU și memorie sau politica de repornire a unui container, fără să-l recreezi.

Sintaxă comandă
docker update [opțiuni] <container> [<container>...]

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 up care recreează containerul, se aplică din nou valorile din compose.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.