El daemon de Docker sale inesperadamente
Docker salió sin razón aparente y estoy tratando de entender qué sucedió.
En este momento, el demonio docker es un servicio cargado, inactivo con un estado de salida 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)
Mirando los registros de la ventana acoplable, esto sucedió porque procesó la señal 'terminada':
$ 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.
Ningún usuario inició sesión en ese host en ese momento, ningún usuario finalizó explícitamente el demonio de la ventana acoplable.
- ¿Por qué sucede esto? ¿Qué registros podrían proporcionar una pista?
- ¿Puedo configurar dockerd para que se reinicie automáticamente al salir?
Esta es la versión 18.09.7 de Docker (compilación 2d0083d) en Ubuntu 16.04.6 LTS en x86-64.
La relación con systemd se pregunta en Unix.stackexchange aquí
Respuestas
Dec 01 06:25:05 ip-10-38-4-210 systemd[1]: Stopping Docker Application Container Engine...
En este punto, systemd envió a Docker una solicitud de detención.
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'"
Docker recibió esa solicitud de detención y sale con gracia.
Dec 01 06:25:16 ip-10-38-4-210 systemd[1]: Stopped Docker Application Container Engine.
Systemd ahora informa que la parada ha finalizado. Es probable que los 10 segundos provengan de contenedores que no manejaron correctamente el docker container stop
comando y fueron eliminados después de 10 segundos, luego otro segundo para terminar de procesar la solicitud.
Entonces, a partir de los registros proporcionados, el demonio dockerd está funcionando según lo solicitado y debe verificar qué habría enviado un systemctl stop docker
comando.
¿Puedo configurar dockerd para que se reinicie automáticamente al salir?
dockerd no controla systemd, systemd controla dockerd, por lo que deberías resolver el problema desde el lado de systemd.
En este caso específico, lo que le dice a systemd que detenga el servicio de la ventana acoplable parece ser el servicio de actualización desatendida de Ubuntu que aplica actualizaciones a la versión de Ubuntu del paquete en contenedor.
https://bugs.launchpad.net/ubuntu/+source/containerd/+bug/1870514
Mi solución recomendada sería instalar Docker desde los repositorios de Docker ascendentes que no parecen tener este problema:
https://docs.docker.com/engine/install/ubuntu/