加速docker健康检查容器



我想加快容器启动时间,但我的健康检查不允许我。比方说我要输入这个healthcheck

HEALTHCHECK --interval=300s --timeout=5s --start-period=5s --retries=3 CMD 
curl http://localhost:<port> > /dev/null || exit 1

我想要的是不等待300+秒启动容器,但检查它是否健康后,例如10s[也许它里面的应用程序是在10秒后启动和运行],如果一切正常启动容器。

我需要间隔为300+秒,因为我不希望检查它的内部运行状况的频率超过1/300

我怎么才能做到呢?

Edit 2023-07-17

现在支持将start-interval设置为在start-period

期间以更短的间隔进行检查。该特性预计将在docker引擎的版本25中发布。

的例子:

HEALTHCHECK --interval=5m --start-period=3m --start-interval=10s 
CMD curl -f http://localhost/ || exit 1

在这个例子中,有一个start-interval10s,这意味着第一次健康检查已完成10s在容器启动后。之后,每10s重复一次nhealthcheck。,直到运行状况状态切换到healthy,或者start-period超过(3m)(. 之后,在常规interval(5m)上进行健康检查。) .

Docker Docs: https://docs.docker.com/engine/reference/builder/#healthcheck

相关拉取请求:https://github.com/moby/moby/pull/40894


截至2021年的原始答案

在执行第一次健康检查之前,目前没有内置的方法来减少时间。Docker总是在容器启动和第一次健康检查之间等待一个完整的间隔。start-period选项只定义了一个宽限时间,允许运行状况检查失败,而不会将容器标记为不健康。这只有在interval低于start-period时才有意义。

有一个功能请求添加一个选项,减少容器启动时的间隔,以使容器更快地进入健康状态:https://github.com/moby/moby/issues/33410

最新更新