Como reiniciar o Docker Desktop: Guia do comando docker desktop restart

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como reiniciar o Docker Desktop, uma operação fundamental para gerenciar seu ambiente Docker. Exploraremos o propósito por trás da reinicialização do Docker Desktop, que é equivalente a reiniciar o serviço daemon do Docker em um ambiente Linux, como o fornecido nesta VM do LabEx.

Você executará o comando básico de reinicialização, aprenderá como reiniciar o Docker Desktop em modo detached (destacado) e entenderá como definir um tempo limite (timeout) para o processo de reinicialização. Essa experiência prática o equipará com o conhecimento para gerenciar e solucionar problemas de forma eficaz em sua configuração Docker, reiniciando o daemon quando necessário.

Entenda o propósito da reinicialização do Docker Desktop

Nesta etapa, entenderemos o propósito de reiniciar o Docker Desktop. Embora o ambiente LabEx forneça uma VM Linux com o Docker pré-instalado, o conceito de reiniciar o daemon do Docker é fundamental para gerenciar ambientes Docker, incluindo o Docker Desktop em outros sistemas operacionais.

O daemon do Docker é o serviço em segundo plano que gerencia objetos Docker, como imagens, containers, redes e volumes. Às vezes, pode ser necessário reiniciar o daemon do Docker por vários motivos, como:

  • Aplicar alterações de configuração: Algumas alterações de configuração no daemon do Docker exigem uma reinicialização para entrar em vigor.
  • Solução de problemas: Reiniciar o daemon pode resolver vários problemas, como containers que não iniciam, problemas de rede ou problemas de desempenho.
  • Liberar recursos: Em alguns casos, reiniciar o daemon pode ajudar a liberar recursos do sistema que podem estar sendo consumidos pelo processo Docker.

Em um ambiente Linux como a VM do LabEx, você interage diretamente com o daemon do Docker por meio da interface de linha de comando docker. O equivalente a reiniciar o Docker Desktop em outros sistemas operacionais é reiniciar o serviço daemon do Docker no Linux.

Para verificar o status do serviço Docker na VM do LabEx, você pode usar o comando systemctl:

systemctl status docker

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

● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since ...
       Docs: https://docs.docker.com
   Main PID: ... (dockerd)
      Tasks: ...
     Memory: ...
        CPU: ...
     CGroup: /system.slice/docker.service
             └─... /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Esta saída confirma que o daemon do Docker está em execução como um serviço do sistema. Embora não reiniciemos o serviço nesta etapa específica para evitar interromper o ambiente, entender seu status é o primeiro passo para gerenciá-lo.

Execute o comando básico docker desktop restart

Nesta etapa, aprenderemos como reiniciar o daemon do Docker em um ambiente Linux, o que é análogo a reiniciar o Docker Desktop. Como aprendemos na etapa anterior, o daemon do Docker é um serviço do sistema. Para reiniciar um serviço do sistema no Linux, usamos o comando systemctl.

O comando básico para reiniciar o serviço Docker é sudo systemctl restart docker. O comando sudo é usado porque reiniciar serviços do sistema normalmente requer privilégios administrativos. O comando systemctl restart interrompe o serviço se ele estiver em execução e, em seguida, o inicia novamente.

Antes de reiniciar, vamos executar um comando Docker simples para garantir que o daemon esteja responsivo. Podemos listar os containers atualmente em execução usando docker ps. Como ainda não iniciamos nenhum container, a saída deve estar vazia ou mostrar apenas os cabeçalhos das colunas.

docker ps

Agora, vamos reiniciar o serviço Docker. Execute o seguinte comando:

sudo systemctl restart docker

Este comando irá parar e, em seguida, iniciar o daemon do Docker. Você não verá muita saída, a menos que haja um erro.

Após a conclusão da reinicialização, vamos verificar o status do serviço Docker novamente para confirmar que ele está em execução:

systemctl status docker

Você deve ver uma saída semelhante à etapa anterior, indicando que o serviço está ativo e em execução, mas a linha "Active" mostrará um carimbo de data/hora recente, indicando que ele foi reiniciado.

Finalmente, vamos executar docker ps novamente para confirmar que o daemon do Docker está responsivo após a reinicialização:

docker ps

A saída deve mostrar novamente os cabeçalhos do container, confirmando que o daemon do Docker está operacional.

Reiniciar o daemon do Docker é uma etapa comum de solução de problemas e é necessário após fazer certas alterações de configuração.

Reiniciar o Docker Desktop em modo detached (desacoplado)

Nesta etapa, exploraremos o conceito de executar processos em "modo detached" e como ele se relaciona com o gerenciamento do daemon do Docker. Embora o termo "modo detached" seja mais comumente associado à execução de containers Docker em segundo plano, o princípio subjacente de executar um processo sem manter o terminal conectado é relevante para serviços do sistema como o daemon do Docker.

Quando você executa um comando em primeiro plano, seu terminal é ocupado até que o comando termine. Em contraste, executar um processo em segundo plano ou "detached" permite que você continue usando seu terminal para outras tarefas. Serviços do sistema como o daemon do Docker são projetados para serem executados em segundo plano automaticamente quando o sistema é iniciado.

No contexto do systemctl, o comando restart, por padrão, é executado de uma forma que não mantém seu terminal conectado. Ele inicia o processo de parada e inicialização e retorna o controle ao seu terminal assim que o comando é executado, mesmo que o serviço ainda esteja no processo de inicialização completa. Isso é semelhante ao conceito de modo detached para containers.

Para ilustrar isso, vamos reiniciar o serviço Docker novamente usando o mesmo comando que antes:

sudo systemctl restart docker

Observe que, após executar o comando, o prompt do seu terminal retorna imediatamente. O próprio comando systemctl restart não espera que o daemon do Docker esteja totalmente operacional antes de retornar. O daemon agora está reiniciando em segundo plano.

Você pode verificar se o serviço está reiniciando e, eventualmente, em execução em segundo plano, verificando seu status:

systemctl status docker

Você verá o status mudar de parando para iniciando e, finalmente, para ativo (em execução). Isso acontece independentemente da sua sessão de terminal após você iniciar o comando de reinicialização.

Este comportamento do systemctl restart é análogo à execução de um container Docker com a flag -d ou --detach, onde o container inicia em segundo plano e não bloqueia seu terminal.

Reiniciar o Docker Desktop com um tempo limite (timeout)

Nesta etapa, aprenderemos como reiniciar o daemon do Docker com um tempo limite. Embora o próprio comando systemctl restart não tenha um parâmetro de tempo limite integrado da mesma forma que alguns comandos Docker têm (como docker stop --time), o conceito de tempo limite é importante ao gerenciar serviços.

No contexto do systemctl, as operações de parada e inicialização que ocorrem durante uma reinicialização têm seus próprios tempos limites internos definidos dentro do arquivo da unidade de serviço. Se um serviço falhar ao parar ou iniciar dentro desses tempos limites definidos, o systemd (o gerenciador de sistema e serviços) normalmente relatará um erro.

Por exemplo, se o daemon do Docker estiver ocupado e demorar muito para desligar quando systemctl restart for executado, o systemd poderá eventualmente encerrar o processo e relatar uma falha. Da mesma forma, se o daemon falhar ao iniciar dentro de seu tempo limite configurado, a operação de inicialização falhará.

Embora não possamos especificar diretamente um tempo limite no próprio comando systemctl restart para todo o processo de reinicialização, podemos simular um cenário em que um tempo limite pode ser relevante observando o comportamento do status do serviço durante uma reinicialização.

Vamos iniciar outra reinicialização do serviço Docker:

sudo systemctl restart docker

Imediatamente após executar o comando, você pode verificar rapidamente o status. Você pode ver brevemente o serviço em um estado "parando" ou "ativando" antes de retornar para "ativo (em execução)".

systemctl status docker

O tempo que o serviço leva para transitar por esses estados é influenciado pelos tempos limites internos configurados para a unidade de serviço Docker. Se o serviço travar durante a parada ou inicialização, o systemd aplicará esses tempos limites.

Por exemplo, se a operação de parada atingir o tempo limite, você poderá ver uma mensagem de erro na saída systemctl status docker ou nos logs do sistema (journalctl -u docker).

Embora não tenhamos uma opção de linha de comando direta para definir um tempo limite para toda a operação systemctl restart, entender que os processos subjacentes de parada e inicialização estão sujeitos a tempos limites é crucial para solucionar problemas de gerenciamento de serviços. Se uma reinicialização estiver falhando consistentemente, investigar os logs do serviço em busca de erros de tempo limite é um bom ponto de partida.

Resumo

Neste laboratório, aprendemos o propósito de reiniciar o Docker Desktop, que é análogo a reiniciar o serviço do daemon do Docker em um ambiente Linux. Entendemos que a reinicialização é necessária para aplicar alterações de configuração, solucionar problemas e liberar recursos. Também aprendemos como verificar o status do serviço Docker usando o comando systemctl status docker em uma VM Linux.

Em seguida, prosseguimos para executar o comando básico docker desktop restart, embora o ambiente do laboratório use uma VM Linux onde interagimos diretamente com o daemon do Docker. Também exploramos a reinicialização do Docker Desktop em modo detached e com um tempo limite especificado, compreendendo as implicações práticas dessas opções para gerenciar o ambiente Docker de forma eficaz.