我有一个应用程序,该应用程序使用Docker SDK for Python并通过Flask应用程序运行容器。我正在使用此容器:
import docker
client = docker.from_env()
client.containers.run("container-name", ports={50: 8080}, detach=True}
由于容器已分离,当容器没有时间加载时,下一行将执行。因此,如果我尝试提出要求:
import requests
res = requests.get("localhost:8080")
我会得到一个错误。
当然,我可以使用这样的构造:
while True:
try:
res = requests.get("localhost:8080")
break
except:
print("Retry to connect")
但这对我不好。 还有其他检查方法吗,容器是否已准备好接受请求?
答案 0 :(得分:0)
使用他们的SDK之前,我遇到过类似的问题。为了解决我的大多数问题,我切换到container.create API,该API返回一个容器对象。
container = client.containers.create(image_name,
detach=True,
tty=True,
network_mode='host',
environment=env_variables,
name='my_container')
container.start()
# do stuff
# container.exec_run(some_bash_command, tty=True, detach=True)
container.stop()
如果您已经有一个容器,可以这样做:
client.containers.get(container_name)