Wo befindet sich das Docker-Daemon-Protokoll?

344

Wo befindet sich das Docker-Daemon-Protokoll? Seltsamerweise kann keine Antwort auf diese Frage über man, StackOverflow oder Docker Docs gefunden werden. Hinweis Ich frage nicht nach dem Docker-Container STDOUT, sondern nach dem Daemon-Protokoll zur Fehlerbehebung bei der Kommunikation zwischen Client und Container über Daemon / Proxy.

user2603634
quelle
6
Die offizielle Liste ist hier: docs.docker.com/config/daemon/#read-the-logs
wisbucky
Sie sollten eine Antwort als die führende wählen, da sie bereits mehrere Jahre zu sein scheint.
Light.G

Antworten:

601

Das hängt von Ihrem Betriebssystem ab. Hier sind die wenigen Speicherorte mit Befehlen für einige Betriebssysteme:

  • Ubuntu (alt mit Upstart) - /var/log/upstart/docker.log
  • Ubuntu (neu mit systemd) - sudo journalctl -fu docker.service
  • Amazon Linux AMI - /var/log/docker
  • Boot2Docker - /var/log/docker.log
  • Debian GNU / Linux - /var/log/daemon.log
  • CentOS - /var/log/daemon.log | grep docker
  • CoreOS - journalctl -u docker.service
  • Fedora - journalctl -u docker.service
  • Red Hat Enterprise Linux Server - /var/log/messages | grep docker
  • OpenSuSE - journalctl -u docker.service
  • OSX - ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/log/d‌​ocker.log
  • Windows - Get-EventLog -LogName Application -Source Docker -After (Get-Date).AddMinutes(-5) | Sort-Object Time, wie hier erwähnt .
Sabin
quelle
Wenn Sie den Syslog-Treiber im Daemon-Modus verwenden, werden hier auch Ihre STDOUT-Protokolle abgelegt.
Ganesh Hegde
Ich glaube, 1.13das hat den OSX-Speicherort verschoben, aber ich kann keine Dokumentation dazu finden.
mkobit
1
Der Link von @Thomasleveil funktioniert nicht mehr. Ich glaube, der entsprechende Link wäre hier docs.docker.com/engine/reference/commandline/dockerd
Adam Mazzarella
Docker-Maschine : Verwenden docker-machine ssh $host tail -f /var/lib/boot2docker/log/docker.log. (Docker-Maschine Version 0.16.1, Build cce350d7)
Claudio
94

Wenn Ihr Betriebssystem verwendet systemd, können Sie das Docker-Daemon-Protokoll anzeigen mit:

sudo journalctl -fu docker.service
mischen
quelle
Dies zeigt auch die Ausgabe der Docker-Container. Gibt es eine Möglichkeit, diese herauszufiltern, um nur die dockerdProtokolle anzuzeigen?
docwhat
3
@TheDoctorWhat, das liegt wahrscheinlich daran, dass Sie journaldals Protokollierungstreiber festgelegt haben. Unter github.com/docker/docker/issues/23339#issuecomment-224275072 können Sie die Container herausfiltern und nur Dämonenprotokolle aufbewahren, indem Sie journalctl -fu docker _TRANSPORT=stdout + OBJECT_EXE=docker(funktioniert hier gut)
Ciro Costa
22

Mit CentOS7 sind Protokolle mit dem Befehl verfügbar journalctl -u docker. Deutliche Antwort, da die Antwort von @ sabin für ältere Versionen von CentOS möglicherweise zutreffend war, für mich jedoch nicht zutraf.

systemd verfügt über ein eigenes Protokollierungssystem namens Journal. Die Protokolle für den Docker-Daemon können mit dem Docker journalctl -u angezeigt werden

Ref: https://docs.docker.com/engine/admin/configuring/

Joedragons
quelle
13

In meiner Umgebung (Docker für Mac 17.07) gibt es keine Protokolldatei unter ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/log/d‌​ocker.log

Stattdessen kann ich die Protokolldatei wie folgt finden.

  1. Geben Sie in VM ein.

    $ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
    oder
    $ screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty

  2. Überprüfen Sie die Protokolldatei

    / # tail -f /var/log/docker.log

SunghoMoon
quelle
11

Für Docker Mac Native (ohne Boot2Docker oder Docker-Computer, der Ihre Docker-Installation ohne zusätzliche VirtualBox ausführt - was ich den anderen empfehlen würde) haben alle Antworten für mich nicht funktioniert . Aber die Docker-Dokumente kamen zum Glück zur Rettung.

Wenn Sie die Docker-Daemon-Protokolle in der Befehlszeile anzeigen möchten, geben Sie einfach Folgendes ein:

syslog -k Sender Docker

Alternativ können Sie ab Mac OS Sierra die neu gestaltete Mac Console App verwenden (verwechseln Sie sich hier nicht mit der App "Terminal", das Symbol der Console App sieht ziemlich ähnlich aus - ich habe es mit dem Launchpad unter "Andere" gefunden. . "). Hier gibt es einen Artikel der die allgemeine Verwendung der neuen Mac OS Sierra Console App beschreibt, die es noch nicht in die offiziellen Docker-Dokumente geschafft hat.

Wählen SieDocker in der Konsolen-App einfach system.log und geben Sie es in die Suchleiste ein. Das ist es. Jetzt sollten alle Docker-bezogenen Protokolle angezeigt werden.

jonashackt
quelle
9

Docker für Mac (Beta)

~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/log/d‌​ocker.log

Lauri
quelle
7

Für Mac mit Docker Toolbox ssh in die VM zuerst mit docker-machine ssh %VM-NAME%und dann überprüfen/var/log/docker.log

YongJiang Zhang
quelle
3

Mit diesem Befehl können Sie auch Protokolle anzeigen:

docker service ps --no-trunc {serviceName}
Taras Vaskiv
quelle
-1

Fügen Sie Möglichkeiten hinzu, um das Docker-Daemon-Protokoll in Windows zu finden:

Versuchen

Bei Verwendung der Docker-Maschine unter Windows und Mac OS X wird der Dämon in einer virtuellen Maschine ausgeführt.

Suchen Sie zunächst Ihren aktiven Docker-Computer.

Docker-Maschine ls Suchen Sie den Namen der aktiven Docker-Maschine in der Ausgabe unter der Spalte NAME.

Sie können die Docker-Daemon-Protokolldatei zur Analyse in Ihr lokales Verzeichnis kopieren:

docker-machine scp default: /var/log/docker.log ./ Dabei ist default der Name des aktiven Docker-Computers.

Gabriel Wu
quelle