2017-12-15 2 views
0

Ich habe einen einfachen Code, für den ich einen Andock-Container erstellt habe und der Status zeigt, dass er ordnungsgemäß ausgeführt wird. Innerhalb des Codes habe ich einige print() Befehle verwendet, um die Daten zu drucken. Ich wollte diese Druckbefehlsausgabe sehen.So können Sie die Protokolle eines Andock-Containers anzeigen

Dafür habe ich Docker Logs gesehen. Aber es scheint nicht zu funktionieren, da es keine Protokolle zeigt. So überprüfen Sie Protokolle.?

$ sudo docker ps 
CONTAINER ID  IMAGE      COMMAND     CREATED    STATUS    PORTS           NAMES 
a3b3fd261b94  myfirstdocker      "python3 ./my_script…" 22 minutes ago  Up 22 minutes              elegant_darwin 

$ sudo docker logs a3b3fd261b94 
<shows nothing> 
+0

Versuchen Sie, weitere Informationen zu Ihrer Frage hinzuzufügen, damit wir das Problem erneut erstellen können. Das Ideal wäre ein [minimales, vollständiges und überprüfbares Beispiel] (https://stackoverflow.com/help/mcve). – tgogos

+0

@tgogos Ich habe weitere Informationen hinzugefügt –

+0

Sie müssen es "vollständiger" machen :-). Wie es im relativen Abschnitt heißt: * "- Einige Leute sind vielleicht bereit, die Teile zu laden und sie tatsächlich zu versuchen, die Antwort zu testen, die sie schreiben werden. - Das Problem ist möglicherweise nicht in dem Teil, den Sie vermuten, dass es ist , aber ein anderer Teil ganz. "* – tgogos

Antwort

2

Der erste Punkt, den Sie benötigen, um Ihre Protokolle zu stdout zu drucken.

Um nur überprüfen Sie den folgenden Befehl verwenden Docker Protokolle:

docker logs --help 

Usage: docker logs [OPTIONS] CONTAINER 

Fetch the logs of a container 

Options: 
     --details  Show extra details provided to logs 
    -f, --follow   Follow log output 
     --help   Print usage 
     --since string Show logs since timestamp 
     --tail string Number of lines to show from the end of the logs (default "all") 
    -t, --timestamps  Show timestamps 

Einige Beispiele:

docker logs --since=1h <container_id> 
+0

Ich habe einen Python-Code und innerhalb habe ich' print() 'verwendet. Ich hoffe, 'stdout' ist das selbe wie' print() ' –

+0

Ja, Sie haben Recht. 'print()' sendet outpot an 'stdout'. – Nickolay

+0

Leider kann ich seine Logs nicht sehen –

0

Wenn es gibt nicht so viel soll ausgegeben (zB Skript versucht, nur wenige Bytes zu drucken), I Verdächtige Python puffert es.

Versuchen Sie, weitere Daten zur Ausgabe hinzuzufügen, um sicherzustellen, dass der Puffer geleert wird und dass PYTHONUNBUFFERED = 1 verwendet wird (obwohl python3 trotz dieser Einstellung immer noch Pufferungen durchführt).

Verwandte Themen