Qual é uma boa maneira de iniciar automaticamente os contêineres do docker quando o sistema é inicializado?
Existe uma maneira preferida de fazer isso no Ubuntu 14.04?
Eu usei supervisord
no passado para iniciar automaticamente aplicativos da web. Mas isso não parece ser a coisa certa para o Docker.
Aparentemente, o método atual para iniciar automaticamente os contêineres do Docker ( do Docker 1.2 ) é usar as políticas de reinicialização . 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 isso faz com que o Docker inicie automaticamente o contêiner na inicialização do sistema:
Trecho da Documentação
O Docker tem esta página que explica como fazer isso com o upstart e o systemd. Concordo que não parece ser a coisa certa para o Docker. A solução deles é executar
docker start
, que pressupõe que você já criou seu contêiner. Eu acho que você fariadocker run --rm
no script upstart (tratando-o como um novo processo e contêiner de uma imagem) ou apenas deixaria 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 de processos, mas você também obtém isso com o início/parada 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 de inicialização funcione.
Por que não?
Eu uso o supervisord para isso com grande sucesso.
Use o que você sabe, use o que funciona, use algo que você possa manter e entender facilmente.