使用Docker Python SDK使容器保持活动状态

时间:2018-11-28 11:07:25

标签: python docker

我正在使用适用于Python的Docker Sdk运行我的容器。

我正在尝试启动docker容器,然后使用api exec_run运行命令(我需要退出代码)。 exec_run需要在启动的容器上执行。

这是我的代码:

import docker

client = docker.from_env()
container = client.containers.run('e7d8452ce5f5', command="echo starting", detach=True)
container.exec_run("echo execute command")

这引发了一个异常:

docker.errors.APIError: 409 Client Error: Conflict ("Container b65acd40f589819f490564dcb4e25f3055d85712cb7b2834ede5f2c4d57f2da6 is not running")

在调用client.containers.run时,我尝试不使用命令运行,同样的异常。

该命令完成后似乎容器存在,即使在其文档中指出使用detach = True运行的命令与cli docker run -d相同(当使用docker run -d时,该容器保持活动状态)

关于如何使容器保持活动状态以便在其上调用exec_run的任何想法?

1 个答案:

答案 0 :(得分:1)

使用container.run()方法启动容器时,应使用 tty 参数并设置 tty = True ,这样它将使容器保持活动状态。

import docker
client = docker.from_env()
container = client.containers.run('xxxx', command="/bin/bash", tty=True,detach=True)