Ich verwende mehrere Container mit docker-compose
. Ich kann Anwendungsprotokolle mit dem Befehl docker-compose logs
sehen. Ich möchte jedoch auf die unformatierte Protokolldatei zugreifen, um sie beispielsweise irgendwo zu senden. Wo liegt es Ich denke, es ist ein separates Protokoll für jeden Container (in Container?), Aber wo kann ich es finden?
Die Protokolle eines Containers finden Sie in:
/var/lib/docker/containers/<container id>/<container id>-json.log
(wenn Sie das Standardprotokollformat verwenden, json)
Sie können docker inspect
jeden Container anzeigen, wo sich die Protokolle befinden:
docker inspect --format='{{.LogPath}}' $INSTANCE_ID
Für den Fall, dass Sie herausfinden wollten, wo die Protokolle ihre kollektive Größe verwalten oder Parameter der Protokollierung selbst anpassen sollten, werden die folgenden Informationen relevant sein.
Festlegen des für die Protokolle reservierten Speicherplatzes
Dies ist der Anforderung zur Löschung des Protokollverlaufs (Ausgabe 1083) ) entnommen:
Docker 1.8 und Docker-Compose 1.4 Es gibt bereits eine Methode zur Begrenzung der Protokollgröße mit Docker Compose Log Driver und Log-Opt Max-Größe
mycontainer:
...
log_driver: "json-file"
log_opt:
# limit logs to 2MB (20 rotations of 100K each)
max-size: "100k"
max-file: "20"
In Docker-Compose-Dateien der Version '2' hat sich die Syntax ein wenig geändert:
version: '2'
...
mycontainer:
...
logging:
#limit logs to 200MB (4rotations of 50M each)
driver: "json-file"
options:
max-size: "50m"
max-file: "4"
(Beachten Sie, dass die Zahlen in beiden Syntaxen als Strings in Anführungszeichen ausgedrückt werden.)
Mögliches Problem mit docker-compose logs
, das nicht beendet
logs
wird nicht beendet, wenn der Container bereits gestoppt istUm zu sehen, wie viel Speicherplatz das Protokoll jedes Containers belegt, verwenden Sie Folgendes:
docker ps -qa | xargs docker inspect --format='{{.LogPath}}' | xargs ls -hl
(Möglicherweise benötigen Sie eine Sudo
vor ls
).
Um die Protokolldatei direkt in weniger anzuzeigen, verwende ich:
docker inspect $1 | grep 'LogPath' | sed -n "s/^.*\(\/var.*\)\",$/\1/p" | xargs Sudo less
führen Sie als ./viewLogs.sh CONTAINERNAME aus
Unter Windows lautet der Standardspeicherort: C:\ProgramData\Docker\containers\<container-id>-json.log
.
Ab dem 22.08.2014 sind die Protokolle zu finden in:
/data/docker/containers/<container id>/<container id>-json.log