Cómo mantener los contenedores Docker en ejecución cuando el demonio se detiene

Una vez que Docker finaliza, se detienen todos los contenedores. La instalación predeterminada no permite que los contenedores se ejecuten a menos que el demonio también esté activo. A continuación, se explica cómo minimizar el tiempo de inactividad de la carga de trabajo manteniendo los contenedores activos durante una interrupción del demonio.

Índice de contenidos()

    ¿Porque es importante?

    Docker ha demostrado ser un sistema confiable capaz de soportar soluciones de producción. Esto no quiere decir que sea infalible. Es posible que aún encuentre un bloqueo que noquea al demonio, desconectando sus contenedores.

    En otro escenario, el administrador de paquetes de su sistema operativo puede actualizar automáticamente Docker, provocando que el demonio se reinicie y un breve período de inactividad. Idealmente, estas situaciones podrían resolverse sin impacto en las cargas de trabajo. Solo como un demonio gestiona contenedores, implementando comandos como docker run es docker rm, no es necesario que persista durante el período intermedio del ciclo de vida de un contenedor.

    Recuperación de contenedores en vivo

    Docker admite un sistema llamado "restauración en vivo" que lo hace posible. En lugar de matar los contenedores mientras el demonio se cierra, Docker los mantendrá en ejecución. Continuará donde lo dejó una vez que se reinicie.

    La restauración en vivo debe habilitarse manualmente. Puede usarlo una vez ejecutando dockerd con el --live-restore flag:

    sudo dockerd --live-restore

    Para habilitar permanentemente la restauración en vivo, agréguela al archivo de configuración del demonio de Docker. Esto generalmente se encuentra en /etc/docker/daemon.json. Deberá crear el archivo si aún no existe.

    A continuación, debe decirle a Docker que vuelva a cargar su configuración. Una recarga no tendrá ningún impacto en sus contenedores, a diferencia de un reinicio completo del demonio.

    sudo systemctl reload docker

    La restauración en vivo ahora debería estar activada. Puede probar esto deteniendo el demonio de Docker.

    sudo systemctl stop docker

    Todos los contenedores en ejecución deben permanecer activos, incluso si el demonio está apagado. No podrás usar docker comandos, ya que la conexión con el demonio se interrumpirá, pero los contenedores continuarán funcionando y mantendrán sus conexiones de red.

    Docker detectará automáticamente los contenedores existentes al reiniciar. Podrá continuar donde lo dejó, sin tener que sufrir tiempo de inactividad.

    Maneja la carrera sostenida sin demonios

    La ejecución de contenedores sin una conexión de demonio activa no debería tener consecuencias graves, incluso durante un período de tiempo prolongado. Sin embargo, los registros comienzan a perderse durante una interrupción prolongada del demonio.

    Los contenedores Docker canalizan sus registros en un búfer primero en entrar, primero en salir (FIFO). El demonio de Docker lee el contenido del búfer para crear los archivos de registro persistentes que ve con docker logs.

    El tamaño del búfer predeterminado es de solo 64 K, por lo que puede agotarse si el demonio no está leyendo activamente su contenido. Cuando el búfer se llena, no es posible administrar más registros hasta que el demonio complete el vaciado del búfer. Puede aumentar el tamaño del búfer cambiando el valor de /proc/sys/fs/pipe-max-size.

    Advertencias de restauración en vivo

    Live Restore debería cubrir la mayoría de los escenarios en los que el demonio de Docker se apaga y se restaura a sí mismo más tarde. Esto incluye actualizaciones de Docker, pero solo entre versiones de parches menores. Si instala una nueva versión principal de Docker (como 19.03 por 20.10), Live Restore no se utilizará y el demonio de Docker siempre se reiniciará.

    Debe tener cuidado con el uso de Live Restore como una forma de cambiar la configuración del demonio de Docker sobre la marcha. Cambiar algunas opciones, como las direcciones IP del puente, evitará que los contenedores se restauren correctamente cuando se reinicie el demonio. En ese caso, deberá detener manualmente todos los contenedores afectados y reemplazarlos por otros nuevos. Esta situación también podría ocurrir si el sistema operativo asigna una configuración de red diferente después de reiniciar.

    Live Restore está diseñado para su uso durante las actualizaciones de Docker y las interrupciones no programadas del demonio. Si necesita cambiar la configuración del demonio, intente programar el tiempo de inactividad. También puedes usar systemctl reload docker para recargar los archivos de configuración sin reiniciar completamente el demonio.

    Aún no existe Live Restore para contenedores basados ​​en Windows. usted puede él usar Live Restore en Windows con contenedores basados ​​en Linux. Está integrado en Docker Desktop y se habilita a través de Preferencias> Daemon> Avanzado.

    Conclusión

    Live Restore le permite minimizar el tiempo de inactividad manteniendo los contenedores en ejecución en ausencia del demonio de Docker. Si necesita instalar una actualización urgente de Docker o se produce un bloqueo, sus cargas de trabajo deben permanecer operativas mientras se reinicia el demonio.

    Habilitar Live Restore es una práctica recomendada cuando se ejecuta Docker en producción. Las herramientas de análisis de configuración pueden marcar las instalaciones que no lo han habilitado.

    Además de utilizar Live Restore, debe asegurarse de que sus contenedores también tengan políticas de reinicio adecuadas. Utilizando restart: always reactivará contenedores individuales después de reiniciar el sistema operativo o cualquier otro inicio de demonio donde Live Restore no se pudo usar.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir