it-swarm.com.de

Wo ist eine Protokolldatei mit Protokollen aus einem Container?

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?

64
user606521

Die Protokolle eines Containers finden Sie in:

/var/lib/docker/containers/<container id>/<container id>-json.log

(wenn Sie das Standardprotokollformat verwenden, json)

115
Michael

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

  • issue 1866 : Der Befehl logs wird nicht beendet, wenn der Container bereits gestoppt ist
67
VonC

Um 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).

5

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

2
icyerasor

Unter Windows lautet der Standardspeicherort: C:\ProgramData\Docker\containers\<container-id>-json.log.

0
pmohandas

Ab dem 22.08.2014 sind die Protokolle zu finden in:

/data/docker/containers/<container id>/<container id>-json.log
0
lixzhang