[Diese Antwort behandelt aktuelle Docker-Versionen für diejenigen, die lange nach der Beantwortung auf die Frage stoßen.]
Um die Standardprotokollgrenzen für alle neu erstellten Container festzulegen, können Sie in /etc/docker/daemon.json Folgendes hinzufügen:
{
"log-driver": "json-file",
"log-opts": {"max-size": "10m", "max-file": "3"}
}
Laden Sie dann Docker mit neu, systemctl reload docker
wenn Sie systemd verwenden (andernfalls verwenden Sie den entsprechenden Neustartbefehl für Ihre Installation).
Sie können auch mit einer ähnlichen Datei zum lokalen Protokollierungstreiber wechseln:
{
"log-driver": "local",
"log-opts": {"max-size": "10m", "max-file": "3"}
}
Der lokale Protokollierungstreiber speichert den Protokollinhalt in einem internen Format (ich glaube Protobufs), sodass Sie mehr Protokollinhalte in derselben Protokolldatei erhalten (oder weniger Dateibereich für dieselben Protokolle benötigen). Der Nachteil des lokalen Treibers sind externe Tools wie Protokollweiterleitungen, die möglicherweise nicht in der Lage sind, die Rohprotokolle zu analysieren. Werden die bewusst docker logs
funktioniert nur , wenn die Protokolltreiber eingestellt ist json-file
, local
oder journald
.
Das max-size
ist eine Grenze für die Docker Protokolldatei, so enthält es die json oder lokale Protokolloverhead - Formatierung. Und das max-file
ist die Anzahl der Protokolldateien, die Docker verwalten wird. Nachdem die Größenbeschränkung für eine Datei erreicht wurde, werden die Protokolle gedreht und die ältesten Protokolle werden gelöscht, wenn Sie sie überschreiten max-file
.
Weitere Informationen zu Docker finden Sie unter: https://docs.docker.com/config/containers/logging/configure/
Ich habe auch eine Präsentation zu diesem Thema. Verwenden Sie P
diese Option , um die Präsentationsnotizen anzuzeigen: https://sudo-bmitch.github.io/presentations/dc2019/tips-and-tricks-of-the-captains.html#logs
--log-driver=none
. Wenn Sie Protokolle nur für bestimmte Container deaktivieren möchten, können Sie sie--log-driver=none
imdocker run
Befehl starten . Eine andere Möglichkeit könnte darin bestehen, einen externen Speicher zu mounten/var/lib/docker
. Wie eine NFS-Freigabe oder etwas, das mehr Speicherkapazität als der betreffende Host hat.