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
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.
@ 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:
Antworten:
Verwenden Sie
docker logs
. Es funktioniert auch für gestoppte Container und erfasst die gesamten STDOUT- und STDERR-Streams des Hauptprozesses des Containers:quelle
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.quelle
Mit dem folgenden Befehl können Sie Protokolle auch aus einem verlassenen Container kopieren:
Z.B:
quelle
Um die Protokolldatei eines verlassenen Containers in weniger direkt am Ende der Datei gescrollt anzuzeigen, verwende ich:
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
quelle