Wer Container mit Docker betreibt, steht regelmäßig vor der Aufgabe, Images zu aktualisieren und alte, ungenutzte Versionen aufzuräumen. Viele setzen dafür auf Tools mit Web-Oberfläche wie Portainer oder Dockge. Ich finde das Helfer-Skript Dockcheck allerdings praktischer: Es läuft im Terminal, aktualisiert Container automatisiert und räumt in einem Rutsch auf, ohne dass ich mich durch Menüs klicken muss.

Installation von dockcheck
Dockcheck benötigt lediglich eine laufende Docker-Installation inklusive Docker Compose (als Plugin oder standalone) sowie einige kleinere Abhängigkeiten wie jq
und regclient/regctl
. Fehlende Pakete installiert das Skript bei Bedarf selbst oder gibt Hinweise dazu aus.
Die Installation ist denkbar einfach:
$ curl -L https://raw.githubusercontent.com/mag37/dockcheck/main/dockcheck.sh -o ~/.local/bin/dockcheck.sh
$ chmod +x ~/.local/bin/dockcheck.sh
Anschließend könnt ihr das Skript direkt aufrufen:
$ dockcheck.sh -h
Info: Dazu muss der Ordner ~/.local/bin
natürlich in der $PATH
-Variable enthalten sein. Ergänzt bei Bedarf die Pfadangabe in eurer ~/.bashrc
oder einer anderen passenden Konfigurationsdatei.
Nutzung von dockcheck
Dockcheck überprüft die installierten Container-Images und aktualisiert sie bei Bedarf. Mit der Option -x
nutzt Dockcheck mehrere Prozesse, was die Geschwindigkeit ganz wesentlich erhöht. Ein einfaches Update aller Container sieht so aus:
### Mit Informationen und Nachfragen:
$ dockcheck.sh -x 5
### Alle Container automatisiert aktualisieren:
$ dockcheck.sh -y -p -x 5
Dabei bewirken die Parameter:
-y
: Automatische Updates ohne Rückfragen.-p
: Bereinigt alte, nicht mehr genutzte Images nach dem Update.-x N
: Parallele Update-Prozesse (Standard: 1, kann für schnellere Updates erhöht werden).
Möchtet ihr bestimmte Container ausschließen, könnt ihr die Option -e
nutzen. Das ist praktisch, wenn bei einem wichtigen Projekt größere Updates anstehen oder ein Container einfach nie aktualisiert werden soll.
$ dockcheck.sh -x 5 -e nextcloud,withings-gc-bridge
Excluding these names:
nextcloud
withings-gc-bridge
[##################################################] 31/31
Containers on latest version:
authelia
changedetection-playwright-chrome-1
...
wallabag-wallabag-1
Containers with updates available:
1) changedetection
2) immich_server
Choose what containers to update.
Enter number(s) separated by comma, [a] for all - [q] to quit:
Weitere praktische Optionen sind:
-d N
: Nur Images aktualisieren, die mindestens N Tage alt sind.-s
: Auch gestoppte Container prüfen.

Updates im Blick behalten
Dockcheck macht das Aktualisieren von Docker-Containern sehr einfach – vielleicht aber fast schon zu einfach. Das Skript installiert neue Container-Images ohne weitere Prüfung. Falls ein Update zu Problemen führt oder manuelle Anpassungen erfordert, bekommt ihr das nicht direkt mit. Daher empfiehlt es sich, News-Quellen wie This Week in Self-Hosted im Auge zu behalten, um über Änderungen informiert zu bleiben und Dockcheck nicht einfach jeden Tag blind anzuwerfen.
Watchtower finde ich besser und flexibler. Insbesondere die Möglichkeit per Label einzelne Container auszuschließen finde ich sehr praktisch.
Watchtower finde ich im Vergleich zu Portainer besser, wenn es um Updates geht. Allerdings sind Dockcheck und Watchtower meiner Meinung nach zwei verschiedene Paar Schuhe. Für das eine benötigt man einen neuen Container mit allem Drum und Dran, während das andere ein einfaches Skript im Terminal ist.
Gerade das sehe ich als Vorteil, da ich mich schneller via SSH auf der Maschine einloggen und das Update anstoßen kann, als das Ganze über den Browser zu machen. Alternativ geht das sogar direkt vom eigenen Rechner aus, ohne vorher eine separate SSH-Session aufmachen zu müssen (klar, es ist auch wieder SSH, aber ich kann es in einem Rutsch erledigen).
Nun, watchtower ist mehr fire and forget. Ich habe am Anfang einmal einen Container mit ein paar Zeilen docker-compose.yml gestartet und seid dem laufen die Updates von alleine und dort wo ich mehr Kontrolle benötige, schließe ich die Container aus.
Der Aufwand zum Aufsetzen war nicht größer als der beim hier vorgestellten Skript und eine Weboberfläche habe ich auch nicht
Negativ ist die Ressourcennutzung, die beim Skript definitiv besser ist.
Letztlich eine Frage der Präferenzen.