Docker 健康检查(Healthcheck)

Docker 支持自定义健康检查(Healthcheck),能主动检测容器内应用是否真的 "健康"(而非仅容器进程运行)。

1. 为容器配置健康检查(两种方式)
方式 1:运行容器时指定健康检查
复制代码
# 示例:检查Nginx是否正常(通过curl访问80端口)
docker run -d \
  --name nginx-test \
  --health-cmd "curl -f http://localhost:80 || exit 1" \  # 健康检查命令(失败则退出码1)
  --health-interval 30s \                                # 检查间隔(每30秒检测一次)
  --health-timeout 5s \                                  # 检查超时时间
  --health-retries 3 \                                   # 连续失败3次标记为不健康
  --health-start-period 60s \                           # 容器启动后,延迟60秒开始首次检查(适配应用启动耗时)
  nginx
方式 2:Dockerfile 中配置健康检查(构建镜像时)
复制代码
FROM nginx
# 安装curl(基础镜像可能没有)
RUN apt update && apt install -y curl && rm -rf /var/lib/apt/lists/*
# 配置健康检查
HEALTHCHECK --interval=30s --timeout=5s --retries=3 --start-period=60s \
  CMD curl -f http://localhost:80 || exit 1
2. 查看容器健康状态
复制代码
# 方式1:docker ps 直接查看(STATUS列会显示健康状态)
docker ps

# 示例输出(重点看 "healthy" 标识):
# CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS                    PORTS     NAMES
# abc123         nginx     "/docker-entrypoint...."   5 minutes ago    Up 5 minutes (healthy)    80/tcp    nginx-test

# 方式2:查看详细健康状态(含检查日志)
docker inspect --format '{{json .State.Health}}' 容器名/容器ID | jq

# 示例输出(解读关键字段):
{
  "Status": "healthy",        # 健康状态:healthy/starting/unhealthy
  "FailingStreak": 0,         # 连续失败次数
  "Log": [                    # 检查日志(可排查失败原因)
    {
      "Start": "2025-12-15T10:00:00+08:00",
      "End": "2025-12-15T10:00:02+08:00",
      "ExitCode": 0,          # 0=成功,非0=失败
      "Output": "<!DOCTYPE html>...(nginx正常响应内容)"
    }
  ]
}
相关推荐
羑悻的小杀马特7 小时前
Docker高阶实战:从镜像构建优化策略实践到MySQL主从集群详解+一主二从容器化实现,一文打通生产级部署!
mysql·docker·容器·镜像实战
元气满满-樱7 小时前
ansible-hoc 模块使用
运维·ansible
_OP_CHEN7 小时前
【Linux系统编程】(十五)揭秘 Linux 环境变量:从底层原理到实战操作,一篇吃透命令行参数与全局变量!
linux·运维·操作系统·bash·进程·环境变量·命令行参数
Lenyiin8 小时前
Linux 项目托管 `git`
linux·运维·服务器·git·lenyiin
Blossom.1188 小时前
基于时序大模型+强化学习的虚拟电厂储能调度系统:从负荷预测到收益最大化的实战闭环
运维·人工智能·python·决策树·机器学习·自动化·音视频
阿达_优阅达9 小时前
集成方案 | 通过 Xtract Universal,将 SAP 数据无缝接入 Power BI 与微软 Fabric
运维·microsoft·sap·fabric·theobald
网络小白不怕黑16 小时前
Docker容器网络:四大模式解析与自定义网络
运维·docker·容器
FeelTouch Labs19 小时前
Nginx核心架构设计
运维·前端·nginx
程序员zgh20 小时前
Linux系统常用命令集合
linux·运维·服务器·c语言·开发语言·c++