docker-py:如何获取容器内运行的进程返回的退出代码?

时间:2019-01-02 03:45:23

标签: docker dockerpy

我的python脚本使用docker-py来启动docker容器,如下所示:

client = docker.from_env()
result = client.containers.run(
    image="my-prog-image:latest",
    command=["/etc/my-prog/configs.ini"],
    auto_remove=True,
    network_mode="host",
)

docker-py: containers所述,client.containers.run(...)方法返回容器。如何检索在容器内运行的my-prog返回的退出代码?

1 个答案:

答案 0 :(得分:1)

result.wait()应该等待容器运行完成,然后返回其退出代码。

但是,由于您指定了auto_remove=True但未指定detach=True,因此您可能会遇到一些麻烦。没有run()的{​​{1}}将运行容器,直到完成,然后detach=True选项将删除该容器,此时状态码将不再存在。您可以明确地拆分这些步骤:

auto_remove=True

(用Docker CLI来说,您已经完成client = docker.from_env() container = client.containers.run( image="my-prog-image:latest", command=["/etc/my-prog/configs.ini"], detach=True, ) result = container.wait() container.remove() ,然后尝试使用docker run --rm ...查找容器的结果,但是容器不见了;我建议将其更改为docker ps -a没有docker run -d ...的情况下,请检查--rm的输出,然后手动docker ps容器。实际上,甚至还有一个docker wait CLI command,但很少使用。)