Por Que meu docker não registra nada?

Eu tenho o seguinte arquivo python:

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

Eu adicionei a um Dockerfile:

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

Se eu construir isso e correr com

sudo docker run -it --name test myimage

tudo é incrível. A cada segundo ou mais imprime a hora atual.

Por outro lado, se eu correr com:

sudo docker run -d --name test myimage

Ele corre para o fundo, mas se eu fizer...

sudo docker logs test

Não recebo nada! Não é nada.

Alguma pista de por que isso está acontecendo, ou como eu poderia descobrir isso? Ambos quando estou usando -d e não quando Eu corro docker inspect isso me dá "Type": "json-file", "Config": {}

Estou executando o Docker 18.06.1-ce, construa E68fc7a, no Ubuntu 18.04.

Sem um TTY anexado, o python provavelmente está armazenando stdout em buffer. Existem muitas maneiras de resolver isso, incluindo adicionar essa alteração ao seu script:

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

Ou sem alterar seu script, você pode executar stdbuf para desligar o buffer de saída:

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

@ BMitch foi isso, obrigado! Passei algumas horas ontem à noite a lutar contra esta maldita coisa.

Verifique se é buffer IO: python - Disable output buffering - Stack Overflow