Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save KeyurRamoliya/f1ab0a7ceca20b0735bd3bb72b4eca75 to your computer and use it in GitHub Desktop.
Save KeyurRamoliya/f1ab0a7ceca20b0735bd3bb72b4eca75 to your computer and use it in GitHub Desktop.
Docker - Use Docker's Health Checks for Container Health Monitoring

Use Docker's Health Checks for Container Health Monitoring

Docker provides a built-in health check feature that allows you to monitor the health of your containers. Health checks are valuable for ensuring the availability and reliability of your services running inside containers. By defining health checks, you can detect when a service becomes unhealthy and take appropriate actions, such as restarting the container.

Here's how to implement a health check in your Dockerfile:

FROM nginx:latest

# Add a simple health check command
HEALTHCHECK --interval=30s --timeout=10s --retries=3 \
  CMD curl -f http://localhost/ || exit 1

# Your container configuration and commands here

In this example, we're using the HEALTHCHECK instruction to define a health check for an Nginx container. It runs the curl command every 30 seconds (--interval=30s) and allows up to 3 retries (--retries=3) with a timeout of 10 seconds (--timeout=10s). The container will be marked as unhealthy if the curl command fails (returns a non-zero status code).

When you run a container with a defined health check, you can use Docker commands like docker ps and docker inspect to check the health status of the container:

docker ps
docker inspect --format "{{json .State.Health.Status}}" <container_name_or_id>

By implementing health checks, you can:

  • Automatically detect and respond to container failures.
  • Use orchestration tools like Docker Compose, Kubernetes, or Docker Swarm to manage container health and perform automatic recovery.
  • Integrate container health checks into your monitoring and alerting systems to proactively address issues.

This practice helps ensure the reliability and availability of your containerized applications, making it easier to maintain healthy services in production environments.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment