Detectar docker caído y reiniciar sistema

Buenas , hace un tiempo tenia un problema con un docker de mosquitto que cuando le apetecía el muy cabrito se paraba y no había forma de levantarlo , alguno me dirá , haber usado restart: always en el docker compose , pero ya estaba así configurado y no había forma , la unica forma era reiniciar el sistema , cuando se paraba caia por cascada toda la domótica de casa con el Home Assistant influxdb , etc ….

Como el tiempo de reinicio del sistema y los 40 dockers era de menos de 20 segundos opte por una solución a la brava , comprobarlo cada X tiempo y si estaba caído reiniciar el sistema.

Crearemos un fichero sh , yo lo he llamado control_dockers.sh que contendra

#!/bin/bash

# Un log, porque siempre va bien
RUTA_LOG="/home/antonio/control_containers.txt"

#echo "#################################################################" >> $RUTA_LOG
#echo "COMPROBAR ESTADO CONTAINER SQL" >> $RUTA_LOG
#echo "#################################################################" >> $RUTA_LOG
echo `uptime` | sed -e 's/^[ \t]*//'  >> $RUTA_LOG

if docker ps | grep -q  lamp
then
    echo "Funcionando!"
    echo "Funcionando!"   >> $RUTA_LOG
    echo "#################################################################" >> $RUTA_LOG

else
    echo "Parado!"
    echo "Parado!"  >> $RUTA_LOG
    echo "*****************************************************************" >> $RUTA_LOG
    echo `date +"%T"` " - "  `date +"%d-%m-%y"`     "REINICIO DEL SISTEMA" >> $RUTA_LOG
    echo "*****************************************************************" >> $RUTA_LOG
    echo `uptime` | sed -e 's/^[ \t]*//'  >> $RUTA_LOG
    echo "*****************************************************************" >> $RUTA_LOG
    echo "#################################################################" >> $RUTA_LOG
    sudo reboot
    exit 1
fi

Basicamente busca si el docker esta activo , en este caso un lamp , y si no lo esta reiniciamos dejando siempre un log para poder ver que esta ocurriendo

Añadiremos la tarea a Cron con crontab -e

#Control de los dockers
*/30 * * * *  /bin/bash  /home/antonio/control_dockers.sh

Aquí esta puesto para que se ejecute cada 30 minutos , a la :00 y a las :30 , pero podéis poner la frecuencia que deseéis

El problema con el mosquitto se soluciono con la ultima version estable del docker , ahora lo tengo funcionando con un lamp por si acaso