Ich führe einen Container auf einer VM aus. Mein Container schreibt standardmäßig Protokolle in die Datei /var/lib/docker/containers/CONTAINER_ID/CONTAINER_ID-json.log, bis der Datenträger voll ist.
Derzeit muss ich diese Datei manuell löschen, um zu vermeiden, dass die Festplatte voll ist. Ich habe gelesen, dass es in Docker 1.8 einen Parameter zum Drehen der Protokolle gibt . Was würden Sie als aktuelle Problemumgehung empfehlen?
--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.journald
Protokolltreiber und sorgen Sie sich um die Protokollrotation./usr/lib/systemd/system/docker.service
möglicherweise die Datei. Ich bin mir bei CoreOS nicht sicher. Unter CentOS ist dies der Ort. Was andere Fragen betrifft, müssen Sie die Optionen des Docker-Dämons ändern, um siejournald
als Protokollierungstreiber zu verwenden . Dann werden Container mit Journald protokolliert und nicht protokolliert/var/lib/docker/containers/CONTAINER_ID/CONTAINER_ID-json.log
. @larsks korrigieren mich, wenn mir etwas fehlt.Antworten:
Docker 1.8 wurde mit einer Protokollrotationsoption veröffentlicht. Hinzufügen:
Wenn der Container gestartet wird, reicht der Trick aus. Weitere Informationen finden Sie unter: https://docs.docker.com/engine/admin/logging/overview/
quelle
17.03.0-ce
solche Versionsnummer haben , bedeutet dies, dass Sie sich im neuen Versionsschema nach 1.13 befinden.VORSICHT: Dies gilt nur für Docker-Compose Version 2
Beispiel:
quelle
Achtung: Dieser Beitrag bezieht sich auf Docker-Versionen <1.8 (die keine
--log-opt
Option haben).Warum verwenden Sie nicht logrotate (das auch die Komprimierung unterstützt)?
Konfigurieren Sie es entweder direkt auf Ihrem CoreOs-Knoten oder stellen Sie einen Container (z. B. https://github.com/tutumcloud/logrotate ) bereit, der / var / lib / docker zum Drehen der Protokolle bereitstellt .
quelle
Übergeben Sie die Protokolloptionen, während Sie einen Container ausführen. Ein Beispiel ist wie folgt
Dabei wird
--log-opt max-size=5m
die maximale Größe der Protokolldatei auf 5 MB--log-opt max-file=10
festgelegt und die maximale Anzahl der zu drehenden Dateien angegeben.quelle
[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:
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:
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 istjson-file
,local
oderjournald
.Das
max-size
ist eine Grenze für die Docker Protokolldatei, so enthält es die json oder lokale Protokolloverhead - Formatierung. Und dasmax-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 überschreitenmax-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#logsquelle
Beispiel für Docker-Compose Version 1:
quelle