systemctl reload docker neaplikuje log-opts — rotace logů tiše nefunguje
import { Aside } from ‘@astrojs/starlight/components’;
Symptom
Sekce “Symptom”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.
Root cause
Sekce “Root cause”Dvě pasti najednou:
- SIGHUP (
systemctl reload docker) nepřenačtelog-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é. Fallbackreload || restartnikdy nespustí restart, protože reload vrací exit 0. - Ověření po oknu bylo bezcenné: log byl těsně předtím
truncate -s 0, takže „soubor je malý” nic nedokazuje.docker inspectukázal pravdu:"LogConfig": {"Type":"json-file","Config":{}}.
Fix
Sekce “Fix”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.