我正在使用适用于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的任何想法?
答案 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)