docker python api:如何知道实例何时准备就绪?
我有一个python模块,它启动了一个全新的docker postgres容器,如下所示:docker python api:如何知道实例何时准备就绪?,python,docker,Python,Docker,我有一个python模块,它启动了一个全新的docker postgres容器,如下所示: import docker, time client = docker.from_env() containers = client.containers.list(all=True) # all checks for dead ones container = client.containers.run( image="postgres", detach=True, por
import docker, time
client = docker.from_env()
containers = client.containers.list(all=True) # all checks for dead ones
container = client.containers.run(
image="postgres",
detach=True,
ports={5432: 5555},
name="postgres_test",
user="postgres",
environment={"POSTGRES_PASSWORD": "foo", "POSTGRES_DB": "test_db"}
)
time.sleep(10)
上面的代码有效。我不太喜欢的一件事是最后一句话——time.sleep(10)
。与其睡觉,我宁愿docker.containers.run()
阻塞容器,或者查询容器以了解它何时初始化
如何删除
time.sleep(10)
行并具有阻止功能?如果您的容器运行服务,请戳该服务以查看其是否可运行。整个容器.attrs[“State”]
在我看来是假的-这只是一堆零。Docker不知道也不关心容器中的服务是否按照其自己的定义准备就绪。它只知道它启动的主进程是否正在运行。因此,如果PostgresQL已经从docker完成了初始化,就无法获得信息。另外:kubernetes及其Ready Probe有这样一个功能。可能的兴趣:特别是:如果您的容器运行服务,请戳一下该服务,看看它是否可操作。整个container.attrs[“State”]
在我看来是假的-这只是一堆零。Docker不知道也不关心容器中的服务是否按照其自己的定义准备就绪。它只知道它启动的主进程是否正在运行。因此,如果PostgresQL已经从docker完成初始化,则无法获取信息。正如一个补充:kubernetes及其readiness Probe具有这样一个功能。可能感兴趣的是:特别是: