Docker SDK for Python:检查容器是否可加载?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (40)

我有一个应用程序,使用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")

但这对我不好。还有其他方法可以检查,容器是否已准备好接受请求?

提问于
用户回答回答于

我在使用他们的SDK之前遇到过类似的问题。为了克服我的大多数问题,我切换到了containers.create 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)

扫码关注云+社区

领取腾讯云代金券