【问题标题】:What happens to a Docker Container when HEALTHCHECK fails当 HEALTHCHECK 失败时 Docker 容器会发生什么
【发布时间】:2020-06-05 09:56:49
【问题描述】:

码头工人docs 说明HEALTHCHECK 指令是什么以及如何检查容器的健康状况。但我无法弄清楚健康检查失败时会发生什么。就像根据用户说明重新启动或停止容器或这两者中的任何一个一样。

进一步引用的例子是:
HEALTHCHECK --interval=5m --timeout=3s CMD curl -f http://localhost/ || exit 1

exit 1 是关于什么的?

【问题讨论】:

  • exit 1 是在其他命令 (HEALTHCHECK) 未成功时退出并出错。

标签: docker dockerfile kubernetes-health-check health-check


【解决方案1】:

运行HEALTHCKECKS时可以指定:

  • --interval=DURATION(默认30s)

  • --timeout=DURATION(默认30s)

  • --retries=N(默认 3)

并且容器可以有三种状态:

  • starting – 容器仍在启动时的初始状态。

  • healthy – 命令成功时。

  • unhealthy – 当HEALTHCHECK 的单次运行所用时间超过指定的超时时间时。发生这种情况时,它将重试,如果仍然失败,将被宣布为“不健康”。

当检查连续失败指定次数时,失败的容器将:

  • 如果处于独立模式

  • ,则保持“不健康”状态
  • 如果处于Swarm 模式则重启

否则它将以错误代码 0 退出,这意味着它被认为是“健康的”。

我希望它能让事情更清楚。

【讨论】:

  • 这应该被标记为答案。你有任何消息来源吗?对于: > 如果处于独立模式,则保持“不健康”状态
【解决方案2】:

我看过一个很好的视频,那个人解释得很好

https://youtu.be/dLBGoaMz7dQ

基本上假设您正在生产中运行一个 Web 服务器,它有 3 个副本。 在部署期间,您要确保不会丢失任何请求。 HEALTHCHECK 基本上有助于识别服务器何时实际运行。 您的服务器开始监听大约需要一两秒钟,在那个时间窗口内您可能会丢失请求。

通过使用HEALTHCHECKS,您可以确保服务器正在运行,这就是为什么有时人们使用CURL(不是最佳做法)

【讨论】:

    【解决方案3】:

    exit 1 是运行状况检查的响应代码 0 - 成功 1 - 不健康 2 - 保留

    【讨论】:

      猜你喜欢
      • 2015-02-26
      • 1970-01-01
      • 2012-08-03
      • 1970-01-01
      • 2021-04-29
      • 1970-01-01
      • 1970-01-01
      • 2014-10-03
      • 2020-11-30
      相关资源
      最近更新 更多