Changelogs von Docker-Images verfolgen - worauf man vor dem Update achten sollte
Changelogs von Docker-Images verfolgen - worauf man vor dem Update achten sollte
Blindes Image-Update ist Glückssache – wer Changelogs liest, erkennt Breaking Changes bevor sie Probleme verursachen.
Wo findet man Changelogs?
GitHub Releases – die zuverlässigste Quelle für die meisten Open-Source-Projekte:
https://github.com/nginx/nginx/releases
https://github.com/docker-library/postgres/blob/master/16/alpine/Dockerfile
https://github.com/MariaDB/mariadb-docker/releases
Docker Hub „Tags"-Tab – zeigt wann ein Tag zuletzt gepusht wurde. Nützlich um zu erkennen wann ein Update verfügbar ist:
# Tags und Erstellungsdaten per API abfragen
curl -s "https://hub.docker.com/v2/repositories/library/nginx/tags/?page_size=10" \
| python3 -m json.tool | grep -E '"name"|"last_updated"'
Image-README auf Docker Hub – offizielle Images haben dort oft wichtige Hinweise zu Konfigurationsänderungen.
GitHub Releases per RSS abonnieren:
https://github.com/nginx/nginx/releases.atom
https://github.com/postgres/postgres/releases.atom
Red Flags im Changelog
Folgende Begriffe im Changelog bedeuten: vor dem Update gründlich testen.
| Begriff | Bedeutung |
|---|---|
| „breaking change" | Explizit Breaking, muss behandelt werden |
| „renamed configuration option" | Alte Umgebungsvariable/Config-Key wird ignoriert |
| „changed default value" | Verhalten ändert sich ohne explizite Konfiguration |
| „removed deprecated" | Feature das noch genutzt wurde ist weg |
| „requires migration" | Datenschema oder Konfiguration muss manuell angepasst werden |
| „major version bump" | Wahrscheinliche Breaking Changes |
Images per dive vergleichen
dive ist ein Tool das Layer-by-Layer zeigt was sich in einem Image geändert hat:
# Installation
wget https://github.com/wagoodman/dive/releases/download/v0.12.0/dive_0.12.0_linux_amd64.deb
apt install ./dive_0.12.0_linux_amd64.deb
# Zwei Images vergleichen
dive nginx:1.24 vs nginx:1.25
# Oder einzelnes Image analysieren
dive nginx:1.25
dive zeigt welche Dateien sich geändert haben – nützlich um zu sehen ob sich Konfig-Defaults oder Verzeichnisstrukturen geändert haben.
docker image inspect vergleichen
# Umgebungsvariablen und Labels zweier Images vergleichen
docker pull nginx:1.24
docker pull nginx:1.25
docker inspect nginx:1.24 --format '{{json .Config.Env}}' | python3 -m json.tool
docker inspect nginx:1.25 --format '{{json .Config.Env}}' | python3 -m json.tool
# Entrypoint und CMD vergleichen
docker inspect nginx:1.24 --format '{{.Config.Entrypoint}} {{.Config.Cmd}}'
docker inspect nginx:1.25 --format '{{.Config.Entrypoint}} {{.Config.Cmd}}'
linuxserver.io: Changelogs im Container
linuxserver.io-Images sind vorbildlich: der Changelog ist direkt als Container-Label verfügbar:
docker inspect lscr.io/linuxserver/heimdall:latest --format '{{index .Config.Labels "build_version"}}'
# Zeigt: Version und Änderungen der aktuellen Version
GitHub Releases abonnieren ohne Account
Per RSS-Reader (z.B. FreshRSS, Miniflux):
# Format für GitHub Release-Feeds:
https://github.com/OWNER/REPO/releases.atom
# Beispiele:
https://github.com/grafana/grafana/releases.atom
https://github.com/jellyfin/jellyfin/releases.atom
https://github.com/portainer/portainer/releases.atom
Vor dem Update: Checkliste
[ ] Release Notes gelesen?
[ ] Breaking Changes identifiziert?
[ ] Staging-Test durchgeführt?
[ ] Backup erstellt?
[ ] Rollback-Plan vorhanden?
[ ] Update-Zeitfenster mit wenig Traffic?
Für Homelab-Dienste kann man diesen Prozess vereinfachen – aber für Datenbanken und Produktiv-Services lohnt sich jeder Schritt.