Cómo aplicar una política de reinicio a un contenedor Docker

Los contenedores Docker son una forma rápida y eficiente de implementar una aplicación o servicio en tu centro de datos. En cuestión de segundos, puedes desplegar un contenedor para prácticamente cualquier cosa. Y si se crea correctamente, ese contenedor funcionará sin errores.

Hasta que tu servidor se desconecte. Tal vez hayas actualizado el kernel y necesites reiniciar. O tal vez haya habido un corte de energía o estás migrando hardware. Sea cual sea la razón, una vez que ese servidor vuelva a funcionar, a menos que hayas desplegado el contenedor correctamente, tendrás que volver a implementarlo.

Esa es la gran pregunta: ¿cómo se despliega un contenedor Docker de manera que se reinicie automáticamente después de que el servidor esté nuevamente en funcionamiento? Es mucho más fácil de lo que crees.

Índice de Contenido
  1. Políticas de reinicio en Docker
  2. Cómo aplicar una política de reinicio
  3. ¿Qué política elegir?

Políticas de reinicio en Docker

Para manejar esto, Docker tiene lo que se denomina Políticas de Reinicio, de las cuales hay cuatro. Estas políticas se pasan a través del comando docker y dictan cómo el contenedor desplegado manejará un reinicio. Las cuatro políticas son:

  1. no: No reiniciar automáticamente el contenedor.
  2. on-failure: Reiniciar el contenedor solo si se detiene debido a un error.
  3. always: Reiniciar siempre el contenedor si se detiene o si se detiene manualmente debido al cierre del daemon.
  4. unless-stopped: Reiniciar siempre el contenedor, a menos que se detenga el daemon, en cuyo caso, el contenedor debe reiniciarse manualmente.

Es importante entender lo siguiente acerca de las políticas de reinicio:

  • Las políticas de reinicio solo tienen efecto si un contenedor se inicia correctamente. Una vez que un contenedor se está ejecutando correctamente, después de 10 segundos Docker comenzará a monitorearlo y aplicará la Política de Reinicio asociada. Si un contenedor no se despliega correctamente, la Política de Reinicio no entra en juego.
  • También, si detienes manualmente un contenedor, se ignora la Política de Reinicio hasta que el propio daemon se reinicie.
  • Las Políticas de Reinicio solo se aplican a los contenedores y no a otros servicios o aplicaciones.

Cómo aplicar una política de reinicio

Supongamos que deseas implementar un contenedor NGINX y quieres asegurarte de que siempre se reinicie. Para esto, querrías aplicar la política always. Sin la Política de Reinicio, nuestra implementación del contenedor NGINX se vería así:

Los diferentes tipos de buses en los dispositivos electrónicos

docker run --name docker-nginx -p 8080:80 -d nginx

El comando anterior implementaría el contenedor NGINX, llamado docker-nginx, en modo desvinculado con el puerto externo 8080 apuntando al puerto interno 80. Si el servidor se desconecta o el demonio de Docker se detiene, ese contenedor se detendría y no se reiniciaría automáticamente. Sin embargo, si implementamos ese contenedor de la siguiente manera, siempre se reiniciará:

docker run --name docker-nginx -p 8080:80 -d nginx --restart always

Puedes aplicar cualquier Política de Reinicio que prefieras después de la opción --restart, por ejemplo:

  • --restart on-failure
  • --restart always
  • --restart unless-stopped

Nota: No es necesario establecer la política --restart no, ya que es la opción predeterminada.

Si utilizas Docker Compose, puedes agregar una Política de Reinicio a tu archivo YAML de la siguiente manera:

Cómo entrar al programa de configuración del BIOS en tu computadora

services:
nginx:
image: nginx:latest
restart: always

Si cambias de opinión sobre una Política de Reinicio, siempre puedes usar el comando de actualización. Supongamos que quieres cambiar de always a unless-stopped. El comando sería:

docker update --restart unless-stopped docker-nginx

Por supuesto, debes cambiar docker-nginx por el nombre del contenedor que deseas modificar.

¿Qué política elegir?

¿Por qué elegirías una política sobre otra? La opción más evidente es unless-stopped. Si tiendes a detener los contenedores manualmente, esta es la Política de Reinicio que deberías elegir. Por ejemplo, podría haber contenedores que uses en períodos específicos del día.

Supongamos que tienes ContainerX para la mañana, ContainerY para la tarde y ContainerZ para la noche. Si estableces la política en always y detienes ContainerX, si el daemon de Docker se reinicia por alguna razón, ContainerX se volverá a iniciar incluso cuando ContainerY esté en funcionamiento. Si utilizas la opción unless-stopped, esos contenedores que detengas manualmente permanecerán detenidos hasta que los reinicies manualmente.

Entendiendo los permisos de archivos y directorios en UNIX

Aparte de eso, la elección entre políticas puede ser un poco confusa. De cualquier manera, ahora puedes mantener esos contenedores en ejecución todo el tiempo.

Suscríbete a How To Make Tech Work en YouTube de Newsmatic para obtener los últimos consejos tecnológicos para profesionales de los negocios de Jack Wallen.

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Centros de Datos, allí encontraras muchos artículos similares a Cómo aplicar una política de reinicio a un contenedor Docker , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.