我的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
返回的退出代码?
答案 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,但很少使用。)