加速 docker healthcheck 容器

Ast*_*ngo 9 docker dockerfile health-check

我想加快容器的启动时间,但我的健康检查不允许我这样做。假设我正在进行健康检查

HEALTHCHECK --interval=300s --timeout=5s --start-period=5s --retries=3 CMD \
    curl http://localhost:<port> > /dev/null || exit 1
Run Code Online (Sandbox Code Playgroud)

我想要的是不要等待 300 多秒来启动容器,而是在 10 秒后检查它是否正常(也许其中的应用程序在 10 秒后启动并运行),以及启动容器是否一切正常。

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

我怎样才能做到这一点?

jan*_*-di 12

编辑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
Run Code Online (Sandbox Code Playgroud)

在这个例子中,有一个start-intervalof 10s,这意味着第一次健康检查是在容器启动后10s完成的。此后,每10s重复一次健康检查,直到健康状态切换到healthy,或者start-period结束 ( 3m )。之后,它会定期interval5m)进行健康检查。

Docker 文档: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