Aparentemente, o método atual para iniciar automaticamente os contêineres Docker (da Docker 1.2) é usar reiniciar Políticas. Isso controlará como o Docker deve lidar com a inicialização do contêiner na inicialização e a reinicialização do contêiner quando ele sair. Eu usei a opção' Sempre ' até agora e posso confirmar que ela faz o Docker iniciar automaticamente o contêiner na inicialização do sistema:
sudo docker run --restart=always -d myimage
Trecho Da Documentação
Políticas de reinicialização usando o sinalizador -- restart no Docker run você pode especificar uma política de reinicialização para saber como um contêiner deve ou não ser reiniciado na saída.
Não-Não reinicie o contêiner quando ele sair.
on-failure-reinicie o contêiner somente se ele sair com um status de saída diferente de zero.
sempre-sempre reinicie o contêiner, independentemente do status de saída.
Você também pode especificar a quantidade máxima de vezes que o Docker tentará reiniciar o contêiner ao usar a Política on-failure. O padrão é que o Docker tentará para sempre reiniciar o contêiner.
$ sudo docker run --restart=always redis
Isso executará o contêiner redis com uma política de reinicialização de always para que, se o contêiner sair, o Docker o reinicie.
$ sudo docker run --restart=on-failure:10 redis
Isso executará o contêiner redis com uma política de reinicialização de falha e uma contagem máxima de reinicialização de 10. Se o contêiner redis sair com um status de saída diferente de zero mais de 10 vezes seguidas, o Docker interromperá a tentativa de reiniciar o contêiner. Fornecer um limite máximo de reinicialização só é válido para a Política de falha.
Docker tem pagina isso explica como fazer isso com upstart e systemd. Concordo que não parece a coisa certa para Docker. Sua solução é executar docker start, que assume que você já criou seu contêiner. Eu acho que você faria docker run --rm no script inicial (tratando - o como um novo processo e contêiner de uma imagem) ou apenas deixe o daemon do docker reiniciar os próprios contêineres na inicialização (como será por padrão se você não fizer mais nada). O Upstart tem a vantagem de permitir o início/parada fácil dos processos, mas você também obtém isso com o Start/stop do docker!
Acho estranho forçar o usuário a criar manualmente um contêiner (com todas as ligações de porta/volume corretas) antes que o script inicial funcione.