Der Docker-Daemon wird unerwartet beendet
Docker ist ohne ersichtlichen Grund gegangen und ich versuche zu verstehen, was passiert ist.
Derzeit ist der Docker-Daemon ein geladener Dienst, der mit dem Exit-Status 0 SUCCESS inaktiv ist.
$ 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)
Bei Betrachtung der Docker-Protokolle geschah dies, weil das Signal "beendet" verarbeitet wurde:
$ 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.
Zu diesem Zeitpunkt war kein Benutzer auf diesem Host angemeldet. Kein Benutzer hat den Docker-Daemon explizit beendet.
- Warum passiert das, welche Protokolle könnten einen Hinweis geben?
- Kann ich dockerd so konfigurieren, dass es beim Beenden automatisch neu gestartet wird?
Dies ist Docker Version 18.09.7 (Build 2d0083d) unter Ubuntu 16.04.6 LTS unter x86-64.
Die Beziehung zu systemd wird hier unter Unix.stackexchange abgefragt
Antworten
Dec 01 06:25:05 ip-10-38-4-210 systemd[1]: Stopping Docker Application Container Engine...
Zu diesem Zeitpunkt hat systemd Docker eine Stoppanforderung gesendet.
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 hat diese Stoppanforderung erhalten und wird ordnungsgemäß beendet.
Dec 01 06:25:16 ip-10-38-4-210 systemd[1]: Stopped Docker Application Container Engine.
Systemd meldet nun, dass der Stopp beendet ist. Die 10 Sekunden stammen wahrscheinlich von Containern, die den docker container stop
Befehl nicht ordnungsgemäß verarbeitet haben und nach 10 Sekunden beendet wurden, und dann noch eine Sekunde, um die Verarbeitung der Anforderung abzuschließen.
Aus den bereitgestellten Protokollen geht hervor, dass der Dockerd-Daemon wie angefordert funktioniert und Sie überprüfen sollten, was einen systemctl stop docker
Befehl gesendet hätte .
Kann ich dockerd so konfigurieren, dass es beim Beenden automatisch neu gestartet wird?
dockerd steuert nicht systemd, systemd steuert dockerd, daher müssten Sie das Problem von systemd lösen.
In diesem speziellen Fall scheint das System, das systemd auffordert, den Docker-Dienst zu stoppen, der unbeaufsichtigte Ubuntu-Update-Dienst zu sein, der Updates für die Ubuntu-Version des Containerd-Pakets anwendet.
https://bugs.launchpad.net/ubuntu/+source/containerd/+bug/1870514
Mein empfohlener Fix wäre die Installation von Docker aus den Upstream-Docker-Repositorys, bei denen dieses Problem anscheinend nicht auftritt:
https://docs.docker.com/engine/install/ubuntu/