Lokale Docker-Container auflisten, die seit 4 Wochen kein Update erhalten haben

Lokale Docker-Container auflisten, die seit 4 Wochen kein Update erhalten haben

In diesem Beitrag zeige ich dir, wie du alle lokalen Docker-Container auflisten kannst, die seit 4 Wochen kein Update mehr erhalten haben. Dazu verwenden wir ein einfaches Bash-Skript, das die Container überprüft und diejenigen ausgibt, die das Zeitlimit überschritten haben.

Das Bash-Skript

Das folgende Skript überprüft alle lokalen Docker-Container und listet diejenigen auf, die seit 4 Wochen kein Update mehr erhalten haben. Kopiere einfach das Skript und führe es in deinem Terminal aus.

#!/bin/bash

time_limit=$(date -d "4 weeks ago" +%s)

docker ps -a --format "{{.ID}}\t{{.Image}}\t{{.Command}}\t{{.CreatedAt}}\t{{.Status}}\t{{.Ports}}\t{{.Names}}" | while IFS=$'\t' read -r id image command created status ports names; do
  if [ -z "$id" ]; then
    continue
  fi

  clean_created=$(echo "$created" | sed 's/ [A-Z]\{3,4\}$//')

  creation_epoch=$(date -d "$clean_created" +%s 2>/dev/null)
  if [ $? -ne 0 ]; then
    continue
  fi

  if [ $creation_epoch -lt $time_limit ]; then
    echo "$names"
  fi
done

Wie funktioniert das Skript?

Das Skript funktioniert wie folgt:

  1. Definiere ein Zeitlimit, das auf das aktuelle Datum minus 4 Wochen gesetzt wird.
  2. Verwende den docker ps -a-Befehl, um alle Docker-Container aufzulisten und formatiere die Ausgabe so, dass die relevanten Informationen (ID, Image, Command, CreatedAt, Status, Ports, Names) tabulatorgetrennt sind.
  3. Durchlaufe die Liste der Container. Für jeden Container:
    1. Überprüfe, ob eine ID vorhanden ist.
    2. Bereinige das Erstellungsdatum, um die Zeitzone zu entfernen.
    3. Konvertiere das bereinigte Erstellungsdatum in ein epoch-Format.
    4. Vergleiche das Erstellungsdatum des Containers mit dem Zeitlimit.
    5. Wenn das Erstellungsdatum älter als das Zeitlimit ist, gib den Namen des Containers aus.

Automatisierung mit Cron

Du kannst dieses Skript automatisieren, indem du es in einen Cron-Job einfügst. Dadurch wird das Skript regelmäßig ausgeführt, und du kannst dich automatisch benachrichtigen lassen, wenn Container seit 4 Wochen kein Update erhalten haben. Hier ist ein Beispiel, wie du das Skript mit Cron einrichtest:

  1. Öffne die Cron-Tabellen-Konfiguration:
    crontab -e
  2. Füge die folgende Zeile hinzu, um das Skript täglich um 8 Uhr morgens auszuführen und die Ausgabe per E-Mail zu senden:
    0 8 * * * /path/to/your/script.sh | mail -s "Docker Container Update Check" your-email@example.com

Ersetze /path/to/your/script.sh durch den tatsächlichen Pfad zu deinem Skript und your-email@example.com durch deine E-Mail-Adresse. Auf diese Weise wirst du automatisch benachrichtigt, wenn ein Container seit 4 Wochen kein Update mehr erhalten hat.

Automatische Updates mit Watchtower

Eine weitere Möglichkeit, deine Docker-Container auf dem neuesten Stand zu halten, ist die Verwendung von Watchtower. Watchtower überwacht deine laufenden Container und aktualisiert sie automatisch, sobald neue Versionen verfügbar sind. Wie du Watchtower einrichtest und nutzt, zeige ich dir in einem späteren Beitrag.

Fazit

Mit diesem einfachen Bash-Skript kannst du leicht herausfinden, welche deiner Docker-Container seit 4 Wochen kein Update mehr erhalten haben. Durch die Automatisierung mit Cron kannst du sicherstellen, dass du regelmäßig über veraltete Container informiert wirst und entsprechende Maßnahmen ergreifen kannst. Alternativ kannst du Watchtower nutzen, um deine Container automatisch aktuell zu halten.

Schreibe einen Kommentar

Diese Seite ist durch reCAPTCHA und Google geschützt Datenschutz-Bestimmungen und Nutzungsbedingungen anwenden.

Der Zeitraum für die reCAPTCHA-Überprüfung ist abgelaufen. Bitte laden Sie die Seite neu.