Configurando as Políticas de Reinício de Contêineres
O Docker permite que você configure políticas de reinício (restart policies) para contêineres. Uma política de reinício determina se um contêiner deve ser reiniciado automaticamente pelo daemon Docker após sua saída. Este é um recurso crucial para garantir a disponibilidade de suas aplicações.
Nesta etapa, você aprenderá como configurar políticas de reinício para contêineres Docker.
Primeiro, vamos parar e remover o contêiner my-nginx anterior para começar do zero.
docker stop my-nginx
docker rm my-nginx
Agora, vamos executar um novo contêiner Nginx com uma política de reinício always (sempre).
docker run -d --name my-nginx-always --restart=always -p 80:80 nginx
A flag --restart=always diz ao Docker para sempre reiniciar o contêiner se ele parar, independentemente do código de saída. Ele também reiniciará o contêiner quando o daemon Docker for iniciado.
Verifique se o contêiner está em execução:
docker ps
Agora, vamos simular uma falha no contêiner, parando-o manualmente.
docker stop my-nginx-always
Aguarde alguns segundos e, em seguida, verifique o status do contêiner novamente:
docker ps
Você deve ver que o contêiner my-nginx-always foi reiniciado automaticamente pelo daemon Docker. A coluna STATUS indicará que ele está Up (ativo) por um curto período.
Outras políticas de reinício comuns incluem:
no: Não reinicie o contêiner automaticamente (padrão).
on-failure: Reinicie o contêiner somente se ele sair com um código de saída diferente de zero (indicando um erro). Você pode opcionalmente especificar o número máximo de tentativas de reinício (por exemplo, on-failure:5).
unless-stopped: Sempre reinicie o contêiner, a menos que ele seja explicitamente parado pelo usuário ou o daemon Docker seja parado.
Vamos tentar a política on-failure. Pare e remova o contêiner atual:
docker stop my-nginx-always
docker rm my-nginx-always
Execute um novo contêiner com a política on-failure:
docker run -d --name my-nginx-on-failure --restart=on-failure -p 80:80 nginx
Verifique se ele está em execução:
docker ps
Agora, vamos simular uma falha. Podemos fazer isso executando um comando dentro do contêiner que sai com um status diferente de zero.
docker exec my-nginx-on-failure sh -c "exit 1"
Verifique o status do contêiner após alguns segundos:
docker ps
O contêiner deve ter sido reiniciado automaticamente porque saiu com um status diferente de zero.
As políticas de reinício são uma ferramenta poderosa para garantir a resiliência de suas aplicações em contêineres. Ao configurar a política apropriada, você pode automatizar a recuperação de contêineres que param inesperadamente.