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

docker-py: How to get exit code returned by process running inside container?

我的 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(...) 方法 returns 容器。如何检索容器内 my-prog 运行 返回的退出代码?

result.wait() 应该等待容器 运行 完成,然后 return 它的退出代码。

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

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 CLI 术语中,您已完成 docker run --rm ...,然后尝试使用 docker ps -a 查找容器的结果,但容器已消失;我建议更改它在没有 --rm 的情况下 docker run -d ...,检查 docker ps 输出,然后手动 docker rm 容器。实际上,甚至还有一个 docker wait CLI command,但很少使用。)