मेरा डॉकर वास्तव में कुछ भी लॉग क्यों नहीं करता है?

मेरे पास निम्नलिखित पायथन फ़ाइल है:

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

मैं जोड़ दिया है, यह करने के लिए एक Dockerfile:

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

अगर मैं इसे बनाता हूं और इसके साथ चलता हूं

sudo docker run -it --name test myimage

सब कुछ कमाल का है । हर सेकंड या तो यह वर्तमान समय को प्रिंट करता है ।

दूसरी ओर, अगर मैं इसे साथ चलाता हूं:

sudo docker run -d --name test myimage

यह पृष्ठभूमि में चलता है, लेकिन अगर मैं करता हूं । ..

sudo docker logs test

मुझे कुछ नहीं मिलता! नहीं एक darn बात है ।

कोई सुराग क्यों यह हो रहा है, या मैं इसे कैसे समझ सकता हूं? दोनों जब मैं उपयोग कर रहा हूँ -d और जब मैं दौड़ता हूं तो नहीं docker inspect यह मुझे देता है "Type": "json-file", "Config": {}

मैं डॉकर 18.06.1-सीई चला रहा हूं, ई 68 एफसी 7 ए का निर्माण, उबंटू 18.04 पर ।

एक टीटीई संलग्न किए बिना, पायथन संभवतः स्टडआउट बफरिंग कर रहा है । वहाँ हैं इसे हल करने के बहुत सारे तरीके, इस परिवर्तन को अपनी स्क्रिप्ट में जोड़ने सहित:

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

या अपनी स्क्रिप्ट को बदले बिना, आप चला सकते हैं stdbuf आउटपुट बफरिंग बंद करने के लिए:

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

@ बीएमच यह था, धन्यवाद! मैंने कल रात इस रफ़ू चीज़ से लड़ते हुए कुछ घंटे बिताए ।

जांचें कि क्या यह आईओ बफरिंग है: python - Disable output buffering - Stack Overflow