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:
- Definiere ein Zeitlimit, das auf das aktuelle Datum minus 4 Wochen gesetzt wird.
- 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. - Durchlaufe die Liste der Container. Für jeden Container:
- Überprüfe, ob eine ID vorhanden ist.
- Bereinige das Erstellungsdatum, um die Zeitzone zu entfernen.
- Konvertiere das bereinigte Erstellungsdatum in ein epoch-Format.
- Vergleiche das Erstellungsdatum des Containers mit dem Zeitlimit.
- 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:
- Öffne die Cron-Tabellen-Konfiguration:
crontab -e
- 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.