Reiniciar um contêiner com um sinal específico
Nesta etapa, você aprenderá como reiniciar um contêiner Docker enviando um sinal específico para o processo principal do contêiner. Embora docker restart envie um sinal de parada padrão (SIGTERM) seguido por um sinal de kill (SIGKILL) após um tempo limite, pode ser necessário enviar um sinal diferente dependendo do aplicativo em execução dentro do contêiner. Você pode conseguir isso primeiro parando o contêiner com um sinal específico usando docker stop e, em seguida, iniciando-o novamente com docker start.
Vamos usar o contêiner my-nginx novamente. Certifique-se de que ele está em execução.
docker ps
Se não estiver em execução, inicie-o:
docker start my-nginx
Agora, vamos parar o contêiner enviando o sinal SIGKILL. Este sinal encerra imediatamente o processo sem permitir que ele execute qualquer limpeza.
docker stop -s SIGKILL my-nginx
Você deve ver o nome do contêiner impresso e, se você executar docker ps, o contêiner não deverá mais ser listado.
docker ps
O contêiner agora está parado. Para reiniciá-lo, simplesmente o iniciamos novamente.
docker start my-nginx
O contêiner agora deve estar em execução novamente. Verifique com docker ps.
docker ps
Você deve ver my-nginx listado com o status Up.
Embora SIGKILL seja uma parada forçada, você também pode enviar outros sinais, como SIGHUP ou SIGINT, se seu aplicativo estiver configurado para tratá-los para desligamentos ou recarregamentos graciosos. No entanto, a configuração padrão do contêiner nginx lida com SIGTERM de forma graciosa.
Vamos parar o contêiner novamente, desta vez usando o sinal SIGTERM padrão (que é o padrão para docker stop se nenhum sinal for especificado).
docker stop my-nginx
Verifique se ele está parado:
docker ps
Agora, inicie-o pela última vez.
docker start my-nginx
Verifique se está em execução:
docker ps
Ao combinar docker stop -s <signal> e docker start, você tem um controle mais granular sobre como um contêiner é parado antes de ser reiniciado.