Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在dockerpy中通过管道从docker运行标准输出_Python_Docker_Dockerpy - Fatal编程技术网

Python 如何在dockerpy中通过管道从docker运行标准输出

Python 如何在dockerpy中通过管道从docker运行标准输出,python,docker,dockerpy,Python,Docker,Dockerpy,当我像这样正常运行docker映像时 docker run -v ..... {DOCKER_IMAGE} 我按预期在终端中获取日志。但是像这样跑: docker_client = docker.from_env() container = docker_client.containers.run(DOCKER_IMAGE, None, environment=[f'foo={self.profile}'], volumes={...,}, auto_remove=True, stderr

当我像这样正常运行docker映像时

docker run -v ..... {DOCKER_IMAGE}
我按预期在终端中获取日志。但是像这样跑:

docker_client = docker.from_env()
container  = docker_client.containers.run(DOCKER_IMAGE, None, environment=[f'foo={self.profile}'], 
volumes={...,}, auto_remove=True, stderr=True, stdout=True)
# No logs show up
似乎抑制了日志。如何在日志运行时获取日志输出?我可以流化docker容器运行吗

我能做到

docker_client.containers.run(.... detach=True)
for line in container.logs(stream=True): 
    print(line)
但是这会丢失它是否是调试/信息/警告/错误
docker logs -f <CONTAINER>

请参阅本页:

设置
stream=True如何

没有测试过,但在测试中显示:

stream
(bool)–如果为true且
detach
为false,则返回日志生成器 而不是字符串。如果“分离”为true,则忽略。默认值:
False

请试一试,告诉我进展如何

更新:
在谷歌搜索“stream”之后,我发现了一个类似的问题,可能会对您有所帮助。

在通过dockerpy运行run命令后,我需要流式处理logoutput。您是否尝试过指定
detach=False
?@alan.elkin是的,如果我将detach=False设置为False,它只会等待终止,然后containers.logs就会拥有一切。但我需要在日志出来时对其进行流式处理。据我所知,默认情况下它是detach=False,我可以将detach=True设置为True,然后迭代日志。在
detach=True
情况下,函数
print
将在运行时打印容器生成的确切日志(取决于容器中的应用程序、应用程序日志,这一切),甚至停止。“丢失调试/信息/警告/错误”到底是什么意思?这是您在python文件中自定义的日志级别吗?我的问题包括使用stream=True的示例,它允许我在分离时迭代每个日志条目,但它不保留它是什么类型的日志、错误、信息、调试等。我显式地试图避免为了运行docker映像而进行炮击。在您的操作中,您在
logs
方法中使用
stream=True
,但在
run
方法中没有使用(与
detach=False一起使用)