Saltar al contenido

¿Cómo inicio automáticamente los contenedores docker en el arranque del sistema?

Nuestro team de trabajo ha estado largas horas investigando respuestas a tus interrogantes, te brindamos la respuesta por eso nuestro deseo es servirte de gran apoyo.

Solución:

Solución 1:

Aparentemente, el método actual para iniciar automáticamente los contenedores Docker (desde Docker 1.2) es usar políticas de reinicio. Esto controlará cómo Docker debe manejar el inicio del contenedor al inicio y el reinicio del contenedor cuando sale. He usado la opción ‘siempre’ hasta ahora y puedo confirmar que hace que Docker inicie automáticamente el contenedor en el arranque del sistema:

sudo docker run --restart=always -d myimage

Extracto de documentación

Políticas de reinicio Con el indicador –restart en la ejecución de Docker, puede especificar una política de reinicio sobre cómo debe reiniciarse o no un contenedor al salir.

no: no reinicie el contenedor cuando salga.

on-failure: reinicie el contenedor solo si sale con un estado de salida distinto de cero.

siempre: reinicia siempre el contenedor independientemente del estado de salida.

También puede especificar la cantidad máxima de veces que Docker intentará reiniciar el contenedor cuando use la política en caso de falla. El valor predeterminado es que Docker intentará para siempre reiniciar el contenedor.

$ sudo docker run --restart=always redis

Esto ejecutará el contenedor redis con una política de reinicio de siempre, de modo que si el contenedor sale, Docker lo reiniciará.

$ sudo docker run --restart=on-failure:10 redis

Esto ejecutará el contenedor de redis con una política de reinicio en caso de falla y un recuento máximo de reinicios de 10. Si el contenedor de redis sale con un estado de salida distinto de cero más de 10 veces seguidas, Docker cancelará el intento de reiniciar el contenedor. Proporcionar un límite de reinicio máximo solo es válido para la política en caso de falla.

Solución 2:

Docker tiene esta página que explica cómo hacerlo con upstart y systemd. Estoy de acuerdo en que no parece lo correcto para Docker. Su solución es ejecutar docker start, lo que supone que ya ha creado su contenedor. Pensaría que harías docker run --rm en el script advenedizo (tratándolo como un nuevo proceso y contenedor de una imagen) o simplemente deje que el demonio docker reinicie los contenedores en el arranque (como lo hará de forma predeterminada si no hace nada más). Upstart tiene la ventaja de permitir un inicio/detención fácil de los procesos, ¡pero también lo obtiene con el inicio/detención de Docker!

Creo que es extraño obligar al usuario a crear manualmente un contenedor (con todos los enlaces de puerto/volumen correctos) antes de que funcione el script advenedizo.


Solución 3:

Pero eso no se siente como lo correcto para Docker.

¿Por que no?

Yo uso supervisord para esto con gran éxito.

Use lo que sabe, use lo que funciona, use algo que pueda mantener y comprender fácilmente.

Sección de Reseñas y Valoraciones

Si te ha resultado de provecho este artículo, sería de mucha ayuda si lo compartieras con más juniors de esta forma nos ayudas a extender este contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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