Mengapa docker saya tidak benar-benar mencatat apa pun?

Saya memiliki file python berikut:

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

Saya telah menambahkannya ke Dockerfile:

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

Jika saya membangun ini dan menjalankan dengan

sudo docker run -it --name test myimage

semuanya mengagumkan. Setiap detik atau lebih mencetak waktu saat ini.

Di sisi lain, jika saya menjalankannya dengan:

sudo docker run -d --name test myimage

Ini berjalan ke latar belakang, tetapi jika saya lakukan...

sudo docker logs test

Aku Tak dapat apa-apa! Bukan hal sialan.

Ada petunjuk mengapa ini terjadi, atau Bagaimana Saya bisa mengetahuinya? Kedua ketika saya menggunakan -d dan tidak ketika aku berlari docker inspect ini memberi saya "Type": "json-file", "Config": {}

Saya menjalankan Docker 18.06.1-ce, membangun e68fc7a, di Ubuntu 18.04.

Tanpa TTY terpasang, python kemungkinan buffering stdout. Ada banyak cara untuk mengatasi ini, termasuk menambahkan perubahan ini ke skrip Anda:

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

Atau tanpa mengubah skrip Anda, Anda dapat menjalankan stdbuf untuk mematikan buffering keluaran:

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

@ BMitch itu saja, terima kasih! Aku menghabiskan beberapa jam semalam berjuang hal sialan ini.

Periksa apakah itu penyangga IO: python - Disable output buffering - Stack Overflow