¿Por qué mi docker en realidad no registra nada?

Tengo el siguiente archivo python:

 import time from datetime import datetime while True:     time.sleep(1)     print(datetime.now())

Lo he agregado a un Dockerfile:

FROM python:3.7WORKDIR /testCOPY test.py /test/CMD ["python", "test.py"]

Si construyo esto y corro con

sudo docker run -it --name test myimage

todo es impresionante. Cada segundo más o menos imprime la hora actual.

Por otro lado, si lo ejecuto con:

sudo docker run -d --name test myimage

Se escapa a un segundo plano, pero si lo hago...

sudo docker logs test

¡No consigo nada! No es una maldita cosa.

¿Alguna pista de por qué está sucediendo esto, o cómo podría resolverlo? Ambos cuando estoy usando -d y no cuando corro docker inspect me da "Type": "json-file", "Config": {}

Estoy ejecutando Docker 18.06.1-ce, compilación e68fc7a, en Ubuntu 18.04.

Sin un tty adjunto, es probable que Python esté almacenando en búfer la salida estándar. Hay muchas formas de resolver esto, incluida la adición de este cambio a su script:

print(datetime.now(), flush=True)

O sin cambiar el script, puede ejecutar stdbuf para desactivar el almacenamiento en búfer de salida:

CMD ["stdbuf", "-oL", "python", "test.py"]

@BMitch eso fue todo, gracias! Pasé un par de horas anoche luchando contra esta maldita cosa.

Compruebe si está almacenando en búfer de E / S: python - Disable output buffering - Stack Overflow