docker daemon sai inesperadamente

Dec 01 2020

Docker saiu sem motivo aparente e estou tentando entender o que aconteceu.

No momento, o daemon do docker é um serviço carregado, inativo com um status de saída 0 SUCCESS.

$ systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Tue 2020-12-01 06:25:16 UTC;
     Docs: https://docs.docker.com
 Main PID: 2218 (code=exited, status=0/SUCCESS)

Olhando os registros do docker, isso aconteceu porque ele processou o sinal 'encerrado':

$ journalctl -u docker.service | tail -25
Nov 30 18:30:21 ip-10-38-4-210 dockerd[2218]: time="2020-11-30T18:30:21.728694550Z" <redacted irrelevant>
Dec 01 06:25:05 ip-10-38-4-210 systemd[1]: Stopping Docker Application Container Engine...
Dec 01 06:25:05 ip-10-38-4-210 dockerd[2218]: time="2020-12-01T06:25:05.867748396Z" level=info msg="Processing signal 'terminated'"
Dec 01 06:25:16 ip-10-38-4-210 systemd[1]: Stopped Docker Application Container Engine.

Nenhum usuário estava conectado naquele host naquele momento, nenhum usuário encerrou explicitamente o daemon do docker.

  • Por que isso está acontecendo, quais registros podem fornecer uma pista?
  • Posso configurar o dockerd para reiniciar automaticamente ao sair?

Esta é a versão 18.09.7 do Docker (build 2d0083d) no Ubuntu 16.04.6 LTS em x86-64.

O relacionamento com o systemd está sendo solicitado no Unix.stackexchange aqui

Respostas

1 BMitch Dec 01 2020 at 13:17
Dec 01 06:25:05 ip-10-38-4-210 systemd[1]: Stopping Docker Application Container Engine...

Nesse ponto, o systemd enviou ao docker uma solicitação de parada.

Dec 01 06:25:05 ip-10-38-4-210 dockerd[2218]: time="2020-12-01T06:25:05.867748396Z" level=info msg="Processing signal 'terminated'"

O Docker recebeu essa solicitação de parada e sai normalmente.

Dec 01 06:25:16 ip-10-38-4-210 systemd[1]: Stopped Docker Application Container Engine.

O Systemd agora relata que a parada foi concluída. Os 10 segundos provavelmente são de contêineres que não manipularam o docker container stopcomando de maneira adequada e foram eliminados após 10 segundos, e outro segundo para concluir o processamento da solicitação.

Portanto, a partir dos logs fornecidos, o daemon dockerd está funcionando conforme solicitado e você deve verificar o que teria enviado um systemctl stop dockercomando.

Posso configurar o dockerd para reiniciar automaticamente ao sair?

dockerd não controla o systemd, o systemd controla o dockerd, então você precisa resolver o problema do lado do systemd.


Neste caso específico, o que diz ao systemd para parar o serviço docker parece ser o serviço de atualização autônoma do Ubuntu aplicando atualizações na versão Ubuntu do pacote containerd.

https://bugs.launchpad.net/ubuntu/+source/containerd/+bug/1870514

Minha correção recomendada seria instalar o docker a partir dos repositórios anteriores do Docker, que não parece ter este problema:

https://docs.docker.com/engine/install/ubuntu/