我有以下python文件:
import time
from datetime import datetime
while True:
time.sleep(1)
print(datetime.now())
我已将其添加到 Dockerfile:
FROM python:3.7
WORKDIR /test
COPY 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
我什么都得不到!不是什么可恶的事情。
任何线索为什么会发生这种情况,或者我怎么能弄清楚?在我使用时而-d
不是在运行时docker inspect
它都给了我"Type": "json-file", "Config": {}
我在 Ubuntu 18.04 上运行 Docker 18.06.1-ce,构建 e68fc7a。
如果没有附加 tty,python 可能会缓冲标准输出。有很多方法可以解决这个问题,包括将此更改添加到您的脚本中:
或者在不更改脚本的情况下,您可以运行
stdbuf
以关闭输出缓冲: