docker daemon sai inesperadamente
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
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 stop
comando 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 docker
comando.
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/