
heute Morgen wachte ich mit einer E-Mail von Watchdog auf, in der es hieß, der Dienst sei ausgefallen. Nachdem ich mich mit dem Server verbunden hatte, stellte ich fest, dass der docker
Dienst ausgefallen war. Nach kurzer Untersuchung stellte ich fest, dass Ubuntu heute Morgen ein unbeaufsichtigtes Upgrade des containerd
Dienstes durchgeführt hatte und der Dienst nach dem Upgrade docker
nicht automatisch gestartet wurde.
Wie kann ich sicherstellen, dass dies nach dem Upgrade nicht erneut passiert?
Antwort1
Wir hatten das gleiche Problem. Ich habe mich für die Verwendung einer systemd-Unit-Datei entschieden, um eine lose Abhängigkeit zwischen Containerd und Dockerd zu erstellen.
Hier ist wie:
Als Root:
Erstellen Sie das Override-Verzeichnis (Berechtigung 755)
mkdir /etc/systemd/system/containerd.service.d/
Erstellen Sie die Override-Datei im obigen Verzeichnis (Berechtigungen 644).
vi override.conf
Fügen Sie der Datei Folgendes hinzu
[Unit]
Before=docker.service
Wants=docker.service
Starten Sie den systemd-Daemon neu
systemctl daemon-reload
Überprüfen Sie, ob es funktioniert
Containerd stoppen
systemctl stop containerd
Überprüfen Sie, ob Dockerd gestoppt wurde
systemctl status docker
Starten Sie containerd
systemctl start containerd
Überprüfen Sie, ob Dockerd gestartet wurde
systemctl status docker
++++++++++++++++++++++++++
Einige Links zu anderer Dokumentation zum Thema
https://www.shellhacks.com/systemd-service-file-example/
https://man7.org/linux/man-pages/man5/systemd.service.5.html
Antwort2
Ich habe Docker und die zugehörigen Pakete auf „Halten“ eingestellt, sodass sie nur bei geplanten Upgrades aktualisiert werden.
sudo apt-mark hold docker containerd
Wenn ich Docker aktualisieren möchte, führe ich aus apt-mark unhold
, aktualisiere die Pakete und halte sie erneut. Ich habe ein Ansible-Playbook, um diesen Vorgang zu automatisieren. Mein Playbook zum Installieren und Konfigurieren von Docker legt die zu haltenden Pakete direkt nach der Installation fest.
Antwort3
DerDokumentationInformationen zu Docker-Neustartrichtlinien sind hilfreich. Starten Sie Ihre Container mit den für Ihren Einsatzzweck geeigneten Optionen always
oder .unless-stopped
Es erscheint auch sinnvoll, Ubuntu daran zu hindern, unbeaufsichtigte Upgrades durchzuführen.