Docker sehen sich das Protokoll eines verlassenen Containers an


Antworten:


97

Verwenden Sie docker logs. Es funktioniert auch für gestoppte Container und erfasst die gesamten STDOUT- und STDERR-Streams des Hauptprozesses des Containers:

$ docker run -d --name test debian echo "Hello World"
02a279c37d5533ecde76976d7f9d1ca986b5e3ec03fac31a38e3dbed5ea65def

$ docker ps -a
CONTAINER ID    IMAGE     COMMAND        CREATED             STATUS                     PORTS               NAMES
49daa9d41a24    debian    "echo test"    2 minutes ago       Exited (0) 2 minutes ago                       test

$ docker logs -t test
2016-04-16T15:47:58.988748693Z Hello World

4
Für einen Docker-Stack, der alle paar Sekunden neu gestartet wird: Der stack=s1 && c=$(task_id=$(docker stack ps "$stack" --filter desired-state=shutdown | tail -n +2 | head -n 1 | awk '{print $1}') && docker inspect --format '{{.Status.ContainerStatus.ContainerID}}' "$task_id") && docker logs "$c"Stack-Name wird am Anfang des Befehls angegeben.
X-Yuri

14

docker logs --tail=50 <container id> für die letzten fünfzig Zeilen - nützlich, wenn Ihr Container schon lange läuft.


1
@ Whitefret, ich habe die Antwort mit Ihrem Vorschlag aktualisiert. Die ursprüngliche Antwort würde das gesamte Protokoll nach unten ziehen und lokal verfolgen, hätte mit einem großen Protokoll und einem langsamen Netzwerk sehr lange
Matthew

6

Mit dem folgenden Befehl können Sie Protokolle auch aus einem verlassenen Container kopieren:

docker cp container_name :path_of_file_in_container destination_path_locally

Z.B:

docker cp sravya:/tmp/report /root/mylog

5

Um die Protokolldatei eines verlassenen Containers in weniger direkt am Ende der Datei gescrollt anzuzeigen, verwende ich:

docker inspect $1 | grep 'LogPath' | sed -n "s/^.*\(\/var.*\)\",$/\1/p" | xargs sudo less +G

Führen Sie als ./viewLogs.sh CONTAINERNAME aus

Diese Methode hat gegenüber docker logsbasierten Ansätzen den Vorteil , dass die Datei direkt geöffnet und nicht gestreamt wird.

sudo ist erforderlich, da sich LogPath / File normalerweise im Root-Besitz befindet

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.