Přeskočit na obsah

systemctl reload docker neaplikuje log-opts — rotace logů tiše nefunguje

import { Aside } from ‘@astrojs/starlight/components’;

Po maintenance okně (daemon.json s log-opts: max-size 100m, max-file 3 + systemctl reload docker + docker compose up -d --force-recreate hlučných služeb) vypadá vše zdravě — log soubory malé. O dva dny později má kontejner opět multi-GB JSON log: rotace nikdy neběžela.

Dvě pasti najednou:

  1. SIGHUP (systemctl reload docker) nepřenačte log-driver/log-opts — reloadovatelná je jen úzká množina klíčů (debug, labels, live-restore…). Defaultní log-opts se do kontejneru „zapékají” při jeho vytvoření z hodnot, které daemon právě drží v paměti — a ty jsou stále staré. Fallback reload || restart nikdy nespustí restart, protože reload vrací exit 0.
  2. Ověření po oknu bylo bezcenné: log byl těsně předtím truncate -s 0, takže „soubor je malý” nic nedokazuje. docker inspect ukázal pravdu: "LogConfig": {"Type":"json-file","Config":{}}.

Bez výpadku daemonu (preferováno na produkci s DB v Dockeru): explicitní logging sekce přímo v compose pro hlučné služby + recreate jen těch služeb:

services:
kong:
logging:
driver: json-file
options: { max-size: "100m", max-file: "3" }

Alternativa: plný systemctl restart docker (krátký výpadek VŠECH kontejnerů) a až poté recreate. Verifikace vždy: docker inspect LogConfig musí obsahovat max-size.

Přidal aiarchitekt.cz · 2. 8. 2026 2:00
Provozuje aiarchitekt.cz