docker-py:访问在ENTRYPOINT命令中运行的python脚本的输出

我在使用Python中的docker-py模块获取在docker容器中运行的Python脚本的输出时遇到了问题。

首先,一些背景:

我创build了一个Dockerfile,并通过命令行( docker build -t myimage /path/to/dockerfile )以正常的方式构build了我的镜像(id docker build -t myimage /path/to/dockerfile )。 Python脚本作为ENTRYPOINT中的ENTRYPOINT命令执行:

 ENTRYPOINT ["python", "/cont_dirpath/script.py"] 

包含脚本的目录在运行时被添加(绑定)到容器。

当我通过通常的docker命令行(在Ubuntu中)使用以下命令执行此操作时:

 docker run -v /host_dirpath:/cont_dirpath 84730be6107f 

我得到预期的Python脚本输出打印到标准输出(显示在terminal – 脚本以print result命令结束)。 这正是我试图从Python内部完成的输出。

但是,当使用docker-py包从Python内部尝试执行此操作时,我无法查看结果 – logs方法返回空string。 以下是我正在使用的Python代码:

 from docker import Client docker = Client(base_url='unix://var/run/docker.sock', version='1.10', timeout=10) contid = docker.create_container('84730be6107f', volumes={"/cont_dirpath":""}) docker.start(contid, binds={"/host_dirpath": {"bind": "/cont_dirpath"} }) print "Docker logs: \n" + str(docker.logs(contid)) 

我只是得到一个空string。 我已经尝试pipe道输出的脚本echocat ENTRYPOINT命令,但无济于事。 我怎样才能得到ENTRYPOINT命令中运行script.py的输出成为该容器日志的一部分,所以我可以使用docker-py Python方法读取它? 我也尝试了docker-py attach方法(我认为logs只是这个的一个包装版本),结果相同。

我已经考虑只是写脚本输出到一个文件,而不是标准输出,但不清楚我将如何访问和使用docker-py方法读取该文件。

任何见解或build议将不胜感激!