Como reiniciar o serviço Docker

DockerBeginner
Pratique Agora

Introdução

Docker é uma plataforma de containerização poderosa que permite aos desenvolvedores implantar e gerenciar aplicações de forma eficiente. Compreender como reiniciar os serviços Docker é crucial para manter a estabilidade do sistema e resolver potenciais problemas de configuração ou desempenho. Este tutorial fornece orientação abrangente sobre como reiniciar os serviços Docker em diferentes cenários e sistemas operacionais. Neste laboratório, você aprenderá como reiniciar o daemon Docker e contêineres individuais, e entenderá o impacto de diferentes métodos de reinicialização.

Reiniciando o Daemon Docker

O daemon Docker é o processo em segundo plano que gerencia objetos Docker, como imagens, contêineres, redes e volumes. Reiniciar o daemon Docker é frequentemente necessário após fazer alterações de configuração ou para resolver problemas que afetam todo o ambiente Docker.

Nesta etapa, você aprenderá como reiniciar o daemon Docker usando comandos systemd.

Primeiro, vamos verificar o status atual do serviço Docker.

sudo systemctl status docker

Você deve ver uma saída indicando se o serviço Docker está ativo e em execução.

Saída da verificação do status do serviço Docker

Agora, vamos reiniciar o serviço Docker. Isso irá parar todos os contêineres em execução gerenciados pelo daemon e, em seguida, iniciar o daemon novamente.

sudo systemctl restart docker

Após a conclusão do comando, verifique o status novamente para confirmar se o serviço Docker foi reiniciado com sucesso.

sudo systemctl status docker

Você deve ver que o serviço foi reiniciado e está ativo.

Alternativamente, você pode parar e iniciar o serviço Docker separadamente. Primeiro, pare o serviço:

sudo systemctl stop docker

Verifique o status para confirmar que está inativo:

sudo systemctl status docker

Em seguida, inicie o serviço:

sudo systemctl start docker

Finalmente, verifique o status mais uma vez para garantir que está ativo:

sudo systemctl status docker

Reiniciar o daemon Docker é uma operação fundamental para gerenciar seu ambiente Docker. É importante estar ciente de que esta ação irá parar todos os contêineres em execução.

Reiniciando Contêineres Individuais

Embora reiniciar todo o daemon Docker afete todos os contêineres, muitas vezes você precisa reiniciar apenas um contêiner específico. Isso é útil para aplicar alterações de configuração específicas do contêiner, resolver problemas com uma única aplicação ou simplesmente reiniciar um serviço em execução em um contêiner.

Nesta etapa, você aprenderá como reiniciar contêineres Docker individuais.

Primeiro, vamos baixar uma imagem Nginx simples e executar um contêiner.

docker pull nginx
docker run -d --name my-nginx -p 80:80 nginx

Este comando baixa a imagem nginx, executa um contêiner chamado my-nginx em modo detached (-d) e mapeia a porta 80 no host para a porta 80 no contêiner (-p 80:80).

Verifique se o contêiner está em execução:

docker ps

Você deve ver o contêiner my-nginx listado com o status Up.

Agora, vamos reiniciar o contêiner my-nginx.

docker restart my-nginx

Este comando envia um sinal de parada para o contêiner, espera que ele pare graciosamente e, em seguida, o inicia novamente. Por padrão, o Docker espera 10 segundos para que o contêiner pare antes de matá-lo à força.

Verifique o status do contêiner novamente:

docker ps

O contêiner ainda deve ser listado como Up, mas a coluna STATUS mostrará que ele foi reiniciado (por exemplo, Up X seconds).

Você também pode especificar um tempo limite (timeout) para a operação de reinicialização usando a flag -t. Por exemplo, para esperar 5 segundos:

docker restart -t 5 my-nginx

Isso é útil se você precisar dar à sua aplicação mais ou menos tempo para desligar de forma limpa.

Reiniciar contêineres individuais fornece controle granular sobre suas aplicações sem afetar outros contêineres em execução ou o próprio daemon Docker.

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.

Resumo

Neste laboratório, você aprendeu como reiniciar o daemon Docker e contêineres individuais. Você explorou diferentes métodos para reiniciar o daemon usando comandos systemd e aprendeu como reiniciar contêineres específicos usando o comando docker restart. Além disso, você aprendeu sobre as políticas de reinício do Docker e como configurá-las para reiniciar automaticamente os contêineres com base em diferentes condições, aprimorando a disponibilidade de suas aplicações. Essas habilidades são fundamentais para gerenciar e solucionar problemas em ambientes Docker de forma eficaz.