J'ai un code simple pour lequel j'ai créé un conteneur Docker et l'état indique qu'il fonctionne correctement. Dans le code, j'ai utilisé certaines commandes print()
pour imprimer les données. Je voulais voir cette sortie de commande d'impression.
Pour cela, j'ai vu des journaux de docker. Mais cela ne semble pas fonctionner car il ne montre aucun journal. Comment vérifier les journaux?
$ 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>
Le premier point que vous devez imprimer vos journaux sur stdout
.
Pour vérifier les journaux du menu fixe, utilisez simplement la commande suivante:
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
Quelques exemples:
docker logs --since=1h <container_id>
S'il n'y a pas tellement de sortie supposée (par exemple, un script essaie simplement d'imprimer quelques octets), je soupçonne que python le met en mémoire tampon.
Essayez d'ajouter plus de données à la sortie pour vous assurer que le tampon est vidé et utilisez également PYTHONUNBUFFERED = 1 (bien que python3 puisse toujours faire de la mise en tampon malgré ce paramètre).