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正常响应内容)"
    }
  ]
}
相关推荐
裴东青1 小时前
10-实战:RuoYi-Cloud的自动化发布
运维·ci/cd·自动化
哎呦,帅小伙哦1 小时前
Linux 时间:从原子钟到 clock_gettime 的每一面
linux·运维·服务器
sxgzzn1 小时前
新能源场站数智化转型:基于数字孪生与AI的智慧运维管理平台解析
大数据·运维·人工智能
张小姐的猫2 小时前
【Linux】多线程 —— 线程互斥
linux·运维·服务器·c++
CodeMartain2 小时前
Dify Windows 原生部署(无 Docker、纯本地)
运维·docker·容器
xxx1x1x2 小时前
极客向:DLL/运行库故障的底层逻辑与自动化修复方案
运维·自动化·dll文件·dll·dll修复·dll缺失·dll一键修复
YuanDaima20482 小时前
Linux 进阶运维与 AI 环境实战:进程管理、网络排错与 GPU 监控
linux·运维·服务器·网络·人工智能
万里侯3 小时前
云原生数据备份与恢复:保障数据安全的最佳实践
微服务·容器·k8s
lolo大魔王4 小时前
Linux 数据文件处理实战:排序、搜索、压缩、归档一站式详解
linux·运维·服务器
llrraa20104 小时前
配置docker国内镜像源
运维·docker·容器