7
respostas

Docker start e restart

Possuo um container que foi criado com a opcao restart always: docker run .... restart always Nesta hipotese se eu reiniciar o sistema operacional o container e inicializado novamente.

Quando eu paro o container (docker stop minhaimagem) e reinicio o sistema operacional o container nao e reinicializado.

Se antes de eu reinicializar o sistema operacional eu executar "docker start minhaimagem" e reiniciar o sistema operacional o container vai ser reiniciado? Em outras palavras o "docker start" recupera os parametros que foram utilizados no "docker run"?

7 respostas

Fala aí Carlos, blz?

Não conheço muito como funciona as políticas de restart em Docker. Mas pelo que eu entendi, ao utilizar o --restart=always seu container que estiver rodando e sair com qualquer status será reiniciado assim que o deamon do Docker estiver up. Inclusive se acontecer um reboot (que no caso irá forçar a saída do container).

Espero ter Ajudado!

Oi Fernando, obrigado pela participacao. Quando voce aplica um "docker stop " essa logica deixa de funcionar. Eu gostaria de saber como eu faco o container voltar a executar mantendo os parametros que passei com o run (incluindo o restart, variaveis de ambiente, etc.)

Quando as políticas de restart são aplicadas ele retorna o container da mesma forma que ele estava antes.

Faça um teste:

docker run --name web --restart=always -d -p 8080:80 nginx

E reinicie o daemon do docker.

Você vai perceber que o container vai ser reiniciado com o mesmo nome (no caso web) e com o mapeamento da porta (no caso 8080:80). Posso repetir esse processo de reiniciar o daemon de novo que o container vai subir da mesma forma.

Acho que nao estou conseguindo me expressar. A sequencia de comandos que estou fazendo e a seguinte:

Passo1: docker run --name web --restart=always -d -p 8080:80 nginx

Passo2: docker stop web

Se voce reiniciar o daemon agora vera que o conteiner nao sera iniciado.

Eu quero que o conteiner volte a funcionar da mesma forma que estava funcionando depois da execucao do passo1.

Como faco isso?

Agradeco qualquer ajuda

Então dessa forma creio que não tem como fazer.

Pois as políticas de restart só são aplicadas quando seu container tem uma saída abrupta. Por falha, shutdown e etc..

Como no seu segundo passo seu container foi parado manualmente, não entra na política.

o docker start funciona. apos fazer "docker start" e com se nunca eu tivesse interrompido.

Sim o docker start tem que funcionar mesmo, o problema é outro.

Quando você roda um container com políticas de de restart (docker run ... --restart=always).

Essas políticas, só serão aplicadas se o container cair ou tiver uma saída inesperada.

Como você está parando ele manualmente através do comando docker stop, não houve nenhuma saída inesperada.

E ao voltar o container manualmente com o comando docker start, as políticas de restart são perdidas.