Docker健康检查命令。我们真的需要|| 1号出口?

Ant*_*oly 7 docker

当 HEALTHCHECK 失败时,Docker 容器会发生什么,已经有一个类似的问题,但次要问题|| exit 1并不是问题的主要焦点(并且还没有直接回答)。

Dockerfile参考包含以下示例:

HEALTHCHECK
 --interval=5m --timeout=3s \
  CMD curl -f http://localhost/ || exit 1
Run Code Online (Sandbox Code Playgroud)

|| exit 1我在互联网上看到过其他几个健康检查说明的例子。即使原始命令仅有的两个可能的退出代码是 0 和 1。

有什么意义|| exit 1

不会curl -f自行退出并出现错误代码 22?Docker 是否无法识别 1 以外的错误代码?

BMi*_*tch 9

即使原始命令仅有的两个可能的退出代码是 0 和 1。

这是一个很大的假设,但那些使用|| exit 1. 如果命令以 2 或除 0 或 1 之外的任何其他代码退出,则这是未定义的行为。据推测,docker 正在为将来可能出现的任何其他行为保留其他退出代码。

特别是对于curl,它可以以许多其他值退出,这些值对curl有意义,但对于健康检查来说是未定义的行为。