Aparentemente, el método actual para iniciar automáticamente los contenedores Docker (desde Docker 1.2) es utilizar políticas de reinicio. Esto controlará cómo Docker debe manejar el inicio del contenedor al inicio y el reinicio del contenedor cuando salga. 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 la Documentación
Al usar el indicador --restart en la ejecución de Docker, puede especificar una política de reinicio sobre cómo se debe o no reiniciar un contenedor al salir.
no-No reinicie el contenedor cuando salga.
en caso de error: Reinicie el contenedor solo si sale con un estado de salida distinto de cero.
siempre: Reinicie 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 utilice la directiva en caso de error. El valor predeterminado es que Docker intentará reiniciar el contenedor para siempre.
$ 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 error y un recuento máximo de reinicios de 10. Si el contenedor redis sale con un estado de salida distinto de cero más de 10 veces seguidas, Docker abortará el intento de reiniciar el contenedor. Proporcionar un límite de reinicio máximo solo es válido para la directiva en caso de error.
Docker tiene esta página eso explica cómo hacerlo con upstart y systemd. Estoy de acuerdo en que no parece lo correcto para Docker. Su solución es correr docker start, lo que supone que ya ha creado su contenedor. Yo pensaría que tú lo harías docker run --rm en el script upstart (tratándolo como un proceso y contenedor completamente nuevos a partir 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 fácil inicio/parada de procesos, pero también se obtiene con el inicio/parada 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.