Docker(Compose)默认健康检查命令及CMD-SHELL脚本语法咨询
关于Elasticsearch Docker Compose健康检查配置的疑问解答
问题1:Docker(Compose)是否默认采用CMD-SHELL作为健康检查命令?
Docker及Docker Compose的健康检查默认采用CMD模式,而非CMD-SHELL模式。CMD模式要求命令以JSON数组形式定义,每个元素对应命令或参数,直接由内核执行,不经过shell解析。只有当需要使用shell的特性(如管道、通配符、环境变量展开)时,才需要显式指定CMD-SHELL(Dockerfile中),或在Docker Compose配置里使用shell:字段来启用shell解析。
问题2:脚本[ -f config/certs/es01/es01.crt ]中-f选项前是否隐含Unix命令?方括号代表什么含义?
这里的[不是语法占位符,它本身就是Unix系统中的一个内置命令,和test命令完全等价。所以不存在所谓的"隐含命令",-f就是[(即test)命令的选项,作用是检查指定路径的文件是否存在且为普通文件。
当执行[ -f config/certs/es01/es01.crt ]时,命令会根据检查结果返回不同的退出码:文件存在则返回0(健康检查通过),不存在则返回非0(健康检查失败),Docker正是通过这个退出码判断容器的健康状态。
内容的提问来源于stack exchange,提问作者Frederik Struck-Schøning
相关产品推荐
相关产品推荐

