我无法使用 Python 中的 docker-py 模块获取在 docker 容器中运行的 Python 脚本的输出。
首先,一些背景:
我创建了一个 Dockerfile 并通过命令行docker build -t myimage /path/to/dockerfile
( Python 脚本作为ENTRYPOINT
Dockerfile 中的命令执行:
ENTRYPOINT ["python", "/cont_dirpath/script.py"]
包含脚本的目录在运行时被添加(绑定)到容器中。
当我通过通常的 docker 命令行(在 Ubuntu 中)执行此操作时,使用:
docker run -v /host_dirpath:/cont_dirpath 84730be6107f
我将预期的 Python 脚本输出打印到标准输出(显示在终端中 - 脚本以print result
命令结尾)。这正是我在 Python 中执行此操作时想要获得的输出。
但是,当尝试使用 docker-py 包从 Python 中执行此操作时,我无法查看结果 - 该logs
方法返回一个空字符串。这是我正在使用的 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))
我只是得到一个空字符串。我尝试将脚本的输出通过管道传输到echo
命令cat
中,ENTRYPOINT
但无济于事。如何在ENTRYPOINT
命令中获取 script.py run 的输出作为该容器日志的一部分,以便我可以使用 docker-py Python 方法读取它?我也尝试了 docker-pyattach
方法(我认为logs
这只是一个包装版本),结果相同。
我考虑过将脚本输出写入文件而不是标准输出,但不清楚我将如何使用 docker-py 方法访问和读取该文件。
任何见解或建议将不胜感激!