¿Qué significa la cadena "(saludable)" en la columna ESTADO?

user@user:~# docker ps

CONTAINER ID  IMAGE   COMMAND  CREATED   STATUS                   PORTS  NAMES

X             X       X        X         Up 20 hours              X      X

X             X       X        X         Up 21 hours (healthy)    X      X
6
Robert Wróbel 6 mar. 2018 a las 21:22

3 respuestas

La mejor respuesta

Ese es el resultado de la HEALTHCHECK instrucción. Esa instrucción ejecuta un comando dentro del contenedor cada 30 segundos. Si el comando tiene éxito, el contenedor se marca como sano. Si falla muchas veces, se marca como poco saludable.

Puede configurar el intervalo, el tiempo de espera, el número de reintentos y el retraso de inicio.

Lo siguiente, por ejemplo, verificará que su contenedor responda a HTTP cada 5 minutos con un tiempo de espera de 3 segundos.

HEALTHCHECK --interval=5m --timeout=3s \
  CMD curl -f http://localhost/ || exit 1

Obtiene un evento health_status cuando cambia el estado de salud. Puede seguir a esos y a otros con docker events.

10
kichik 6 mar. 2018 a las 18:34

Significa que están usando el comando: healthcheck

https://docs.docker.com/engine/reference/builder/#healthcheck

Cuando un contenedor tiene una verificación de salud especificada, tiene un estado de salud además de su estado normal. Este estado es inicialmente comenzando . Cada vez que se aprueba un control de salud, se convierte en healthy (en cualquier estado en el que se encontraba anteriormente). Después de un cierto número de fallas consecutivas, se convierte en insalubre .

**starting**  – Initial status when the container is still starting
**healthy**   – If the command succeeds then the container is healthy
**unhealthy** – If a single run of the  takes longer than the specified 
  timeout then it is considered unhealthy. If a health check fails then the 
  will run retries number of times and will be declared unhealthy 
  if the  still fails.

Referencia

2
nasatome 6 mar. 2018 a las 18:44

https://ryaneschinger.com/blog/using-docker-native-health-checks/

Normalmente es algo con lo que se inicia, para permitir que enjambre u otros servicios verifiquen el estado del contenedor.

ES DECIR:

$ docker run --rm -it \
     --name=elasticsearch \
     --health-cmd="curl --silent --fail localhost:9200/_cluster/health || exit 1" \
     --health-interval=5s \
     --health-retries=12 \
     --health-timeout=2s \
     elasticsearch

Ver las comprobaciones de estado habilitadas en tiempo de ejecución?

3
ajankuv 6 mar. 2018 a las 18:33