Herramientas de usuario

Herramientas del sitio


informatica:sistemas_operativos:cursos:healthcheck

¡Esta es una revisión vieja del documento!


Healthcheck con Docker

Contenido perteneciente al curso Docker avanzado

Comprobación de “salud” del contenedor: revisar si el servicio está funcionando de forma adecuada.

Docker permite lanzar una comprobación, pero esta comprobación depende de nosotros. No es lo mismo comprobar que responda al puerto 80, que hacer comprobaciones más complejas.

Podemos hacer healthchecks en 3 partes:

  • Al construir la imagen
  • Al lanzar un contenedor (docker run)
  • En Compose

Healthcheck en imágenes

En un Dockerfile:

RUN echo "#!/bin/bash\n\nservice nginx status || exit 1" > /opt/healthcheck.sh
# con curl:
# RUN echo "#!/bin/bash\n\n curl -f http://localhost/ || exit 1" > /opt/healthcheck.sh
RUN chmod +x /opt/healthcheck.sh

FROM nginx

HEALTHCHECK --interval=30s --tiemout=30s --start-period=5s --retries=3 CMD ["/opt/healthcheck.sh"]
# HEALTHCHECK --interval=10s --timeout=10s --start-period=5s --retries=3 CMD curl -f http://localhost:80 || exit 1
  • interval: cada cuanto tiempo se ejecuta la comprobación.
  • timeout: tiempo máximo para que la comprobación finalice exitosamente.
  • start-period: tiempo de espera desde que se lanza el contenedor hasta que ejecutamos la primera comprobación.
  • retries: número de veces consecutivas que puede fallar la comprobación antes de considerar que el contenedor está en estado unhealthy
  • CMD es lo que ejecutaremos como test / comprobación del estado de salud del contenedor.

Al ver el estado del contenedor:

docker ps

Docker Compose

services:
  web:
    image: nginx
    
    healthcheck:
      interval: 5s
      timeout: 5s
      start_period: 10s
      retries: 3
      test: curl -f http://localhost || exit 1

A través de otro contenedor específico

Hay contenedores que se encargan de revisar el estado de otros contenedores y reiniciarlo, como Docker Autoheal

docker run -d \
    --name autoheal \
    --restart=always \
    -e AUTOHEAL_CONTAINER_LABEL=all \
    -v /var/run/docker.sock:/var/run/docker.sock \
    willfarrell/autoheal
informatica/sistemas_operativos/cursos/healthcheck.1697653680.txt.gz · Última modificación: por tempwin