le démon docker se ferme de manière inattendue

Dec 01 2020

Docker est sorti sans raison apparente et j'essaie de comprendre ce qui s'est passé.

À l'heure actuelle, le démon docker est un service chargé, inactif avec un statut de sortie 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)

En regardant les journaux du docker, cela s'est produit car il a traité le signal `` terminé '':

$ 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.

Aucun utilisateur n'était connecté sur cet hôte à ce moment-là, aucun utilisateur n'a explicitement mis fin au démon docker.

  • Pourquoi cela se produit-il, quels journaux pourraient fournir un indice?
  • Puis-je configurer dockerd pour qu'il redémarre automatiquement à la sortie?

Il s'agit de la version 18.09.7 de Docker (build 2d0083d) sur Ubuntu 16.04.6 LTS sur x86-64.

La relation avec systemd est demandée sur Unix.stackexchange ici

Réponses

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

À ce stade, systemd a envoyé à docker une demande d'arrêt.

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 a reçu cette demande d'arrêt et quitte correctement.

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

Systemd signale maintenant que l'arrêt est terminé. Les 10 secondes proviennent probablement de conteneurs qui n'ont pas géré correctement la docker container stopcommande et ont été supprimés après 10 secondes, puis une autre seconde pour terminer le traitement de la demande.

Ainsi, à partir des journaux fournis, le démon dockerd fonctionne comme demandé et vous devriez vérifier ce qui aurait envoyé une systemctl stop dockercommande.

Puis-je configurer dockerd pour qu'il redémarre automatiquement à la sortie?

dockerd ne contrôle pas systemd, systemd contrôle dockerd, vous devez donc résoudre le problème du côté systemd.


Dans ce cas précis, la chose qui dit à systemd d'arrêter le service docker semble être le service de mise à jour sans assistance d'Ubuntu appliquant les mises à jour de la version Ubuntu du package containerd.

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

Ma solution recommandée serait d'installer docker à partir des référentiels Docker en amont qui ne semblent pas avoir ce problème:

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