Configurar Políticas de Reinicio de Contenedores (Configuring Container Restart Policies)
Docker le permite configurar políticas de reinicio (restart policies) para los contenedores. Una política de reinicio determina si un contenedor debe ser reiniciado automáticamente por el demonio de Docker (Docker daemon) después de que salga. Esta es una característica crucial para garantizar la disponibilidad de sus aplicaciones.
En este paso, aprenderá cómo configurar políticas de reinicio para contenedores de Docker.
Primero, detengamos y eliminemos el contenedor my-nginx anterior para comenzar de nuevo.
docker stop my-nginx
docker rm my-nginx
Ahora, ejecutemos un nuevo contenedor Nginx con una política de reinicio de always.
docker run -d --name my-nginx-always --restart=always -p 80:80 nginx
La bandera --restart=always le dice a Docker que siempre reinicie el contenedor si se detiene, independientemente del código de salida. También reiniciará el contenedor cuando se inicie el demonio de Docker.
Verifique que el contenedor se esté ejecutando:
docker ps
Ahora, simulemos una falla del contenedor deteniéndolo manualmente.
docker stop my-nginx-always
Espere unos segundos y luego verifique el estado del contenedor nuevamente:
docker ps
Debería ver que el contenedor my-nginx-always ha sido reiniciado automáticamente por el demonio de Docker. La columna STATUS indicará que ha estado Up durante un breve período.
Otras políticas de reinicio comunes incluyen:
no: No reinicie automáticamente el contenedor (predeterminado).
on-failure: Reinicie el contenedor solo si sale con un código de salida distinto de cero (lo que indica un error). Opcionalmente, puede especificar el número máximo de intentos de reinicio (por ejemplo, on-failure:5).
unless-stopped: Siempre reinicie el contenedor a menos que el usuario lo detenga explícitamente o se detenga el demonio de Docker.
Probemos la política on-failure. Detenga y elimine el contenedor actual:
docker stop my-nginx-always
docker rm my-nginx-always
Ejecute un nuevo contenedor con la política on-failure:
docker run -d --name my-nginx-on-failure --restart=on-failure -p 80:80 nginx
Verifique que se esté ejecutando:
docker ps
Ahora, simulemos una falla. Podemos hacer esto ejecutando un comando dentro del contenedor que salga con un estado distinto de cero.
docker exec my-nginx-on-failure sh -c "exit 1"
Verifique el estado del contenedor después de unos segundos:
docker ps
El contenedor debería haberse reiniciado automáticamente porque salió con un estado distinto de cero.
Las políticas de reinicio son una herramienta poderosa para garantizar la resiliencia de sus aplicaciones en contenedores. Al configurar la política adecuada, puede automatizar la recuperación de contenedores que se detienen inesperadamente.