Python docker容器使用print()

Python docker容器使用print(),python,docker,Python,Docker,你好,我想用 print('Hello world') 为了了解一些变量的情况,我使用Docker,这意味着默认情况下它不会打印任何内容。 有人能告诉我如何将这些打印命令传递给docker容器吗?这是因为Python默认会缓冲其输出 更改此行为的一个简单方法是使用:docker run-e PYTHONUNBUFFERED=1 另一种方法是使用调用python命令。也许您应该使用特权选项运行容器以共享/dev(因此,共享/dev/stdout) 这对我有用: print.py: print("

你好,我想用

print('Hello world')
为了了解一些变量的情况,我使用Docker,这意味着默认情况下它不会打印任何内容。
有人能告诉我如何将这些打印命令传递给docker容器吗?

这是因为Python默认会缓冲其输出

更改此行为的一个简单方法是使用:
docker run-e PYTHONUNBUFFERED=1


另一种方法是使用调用python命令。

也许您应该使用特权选项运行容器以共享/dev(因此,共享/dev/stdout)

这对我有用:

print.py:

print("Hello world")
Dockerfile:

FROM python
ADD print.py /
ENTRYPOINT ["python",  "/print.py"]
命令:

$ docker build -t python-test .
$ docker run -it --privileged python-test
Hello world

希望对您有所帮助。

您可以查看
docker日志
以查看容器的输出。此外,您可以在非分离模式下运行容器,也就是说,在执行
docker run
操作时,省略
-d
标志,输出应打印到标准输出。简单的
打印
语句不需要
--privileged
赋予主机的巨大权力(例如,它赋予关闭主机的权力)
/dev/stdout
通常只是指向
/proc/self/fd/1
的链接,也就是说,它是进程的正常标准输出;你甚至不需要一个设备文件来写。