¿Cómo puedo iniciar automáticamente los contenedores Docker al arrancar el sistema?
¿Cuál es una buena manera de iniciar automáticamente los contenedores docker cuando el sistema arranca?
¿Hay alguna forma preferida de hacerlo en Ubuntu 14.04?
He utilizado supervisord
en el pasado para iniciar automáticamente aplicaciones web. Pero eso no se siente como lo correcto para Docker.
114
3
Aparentemente, el método actual para auto-iniciar contenedores Docker (desde Docker 1.2) es usar restart policies. Esto controlará cómo Docker debe manejar el inicio del contenedor al arrancar y el reinicio del contenedor cuando sale. He utilizado la opción "always" hasta ahora, y puedo confirmar que hace que Docker auto-inicie el contenedor en el arranque del sistema:
Extracto de la documentación
Políticas de reinicio Usando la opción --restart en la ejecución de Docker puedes
Docker tiene esta página que explica cómo hacerlo con upstart y systemd. Estoy de acuerdo en que no parece lo más adecuado para Docker. Su solución es ejecutar
docker start
, que asume que ya has creado tu contenedor. Yo pensaría que o bien ejecutasdocker run --rm
en el script upstart (tratándolo como un nuevo proceso y contenedor a partir de una imagen) o simplemente dejas que el demonio docker reinicie los contenedores por sí mismo en el arranque (como lo hará por defecto si no haces nada más). Upstart tiene la ventaja de permitir un arranque/parada fácil de los procesos, ¡pero eso también se consigue con el arranque/parada de docker!Creo que es raro forzar al usuario a crear manualmente un contenedor (con todos los puertos/volúmenes correctos) antes de que el script upstart funcione.
Pero eso no parece lo más adecuado para Docker.
¿Por qué no?
Yo uso supervisord para esto con gran éxito.
Usa lo que sabes, usa lo que funciona, usa algo que puedas mantener y entender fácilmente.