Direkt zum Hauptinhalt

Container automatisch aktualisieren

Wer fleißig Container mit Docker bereitstellt, wird schnell feststellen, dass es sehr aufwendig ist, alle Container aktuell zu halten. Zum Glück gibt es Watchtower, das selbst als Container bereitgestellt wird und alle anderen Container aktuell hält.  Indem der Docker Socket des Hosts an den Container weitergereicht wird, kann Watchtower andere Container überwachen, die Images auf Updates prüfen und diese dann einspielen.

Für eine minimale Installation kann folgende Docker Compose Konfiguration verwendet werden. Jeden Tag um 01:00 Uhr werden alle Containern geprüft und bei einem verfügbaren Update dieses heruntergeladen, der Container gelöscht und mit dem neuen Image gestartet. Zusätzlich werden alle alten Images gelöscht, um nicht Gefahr zu laufen, dass der Speicherplatz vollgemüllt wird.

services:
  watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - WATCHTOWER_CLEANUP=true
      - "WATCHTOWER_SCHEDULE=0 0 1 * * *"
      - TZ=Europe/Berlin
    restart: unless-stopped

Um die Docker Compose Konfiguration auszuführen, kann am besten in das Verzeichnis der YAML Datei gewechselt werden. Danach wird je nach nach gewählter Installation sudo docker-compose up -d oder sudo docker compose up -d (keine Bindestrich zwischen docker und compose) eingegeben, um die Standard Konfiguration docker-compose.yml zu starten. Compose erstellt dann die gewünschten Container mit den angegeben Optionen. Sollten die Container bereits mit dieser Compose Konfiguration erstellt worden sein, so werden die Container in dieser neu erstellt, dessen Konfiguration geändert wurde.

Nun werden alle Container automatisch überwacht. Wer zusätzliche Anforderungen hat wie z. B. Benachrichtigungen (per Mail) oder nur einige Container überwachen lassen möchte, kann in der Liste der Argumente in der offiziellen Dokumentation weitere Einstellungsoptionen finden: Watchtower Argumente