Kann ich auf irgendeine Weise das Protokoll eines Containers sehen, der beendet wurde?
Ich kann die Container-ID des verlassenen Containers mit docker ps -a
abrufen, möchte aber wissen, was passiert ist, als er ausgeführt wurde.
Kann ich auf irgendeine Weise das Protokoll eines Containers sehen, der beendet wurde?
Ich kann die Container-ID des verlassenen Containers mit docker ps -a
abrufen, möchte aber wissen, was passiert ist, als er ausgeführt wurde.
Antworten:
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
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.
docker logs --tail=50 <container id>
für die letzten fünfzig Zeilen - nützlich, wenn Ihr Container schon lange läuft.
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 logs
basierten 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