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正常响应内容)"
    }
  ]
}
相关推荐
独隅9 小时前
GitHub Actions 自动化运维实战:CI/CD 流水线一体化效果展示
运维·自动化·github
饺子大魔王的男人10 小时前
CentOS部署Cockpit:图形化查看系统、日志与服务状态
linux·运维·centos
不会就选b10 小时前
Linux之信号(二)
linux·运维·服务器
寺中人12 小时前
Linux 基础命令入门实战教程:从零掌握常用操作,新手快速上手
linux·运维·服务器·shell·linux 命令·linux 基础教程·linux 入门
V哥AI增长12 小时前
Schema.org 结构化数据与GEO技术落地:AI引擎引用机制与JSON-LD部署实证研究
大数据·运维·人工智能
小张成长计划..12 小时前
【Linux】18:基础IO
linux·运维·服务器
童槿顏丶13 小时前
docker自动化部署脚本
docker·eureka·自动化
东东最爱敲键盘14 小时前
二阶段总结
运维
Benszen14 小时前
云计算基础-13:Linux网络管理实战-1
linux·运维·云计算
扬帆破浪14 小时前
文档自动检查:用 Claude Code、OpenClaw 审 WPS 文件:预览、批注、改正文
运维·服务器·wps