Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
docker python api:如何知道实例何时准备就绪?_Python_Docker - Fatal编程技术网

docker python api:如何知道实例何时准备就绪?

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

我有一个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,
    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具有这样一个功能。可能感兴趣的是:特别是: