Print
Category: Proxmox
Hits: 7930

Allein schon aus sicherheitstechnischen Überlegungen ist es angeraten, verfügbare Updates zeitnah einzupflegen. Tut man dies nicht, setzt man sich unnötig Risiken aus. Dabei steigt der Arbeitsaufwand für Aktualisierungen mit der Anzahl der verfügbaren Updates. Nutzt man Docker als Containerlösung, bietet sich Watchtower als Updatesoftware an, welcher voll automatisiert nach Updates für laufende Container sucht und diese updatet. Gerade beim Bereitstellen von Microservices ist damit ein wirksames Mittel gegen unübersichtliche Updatemaßnahmen gefunden. Ein anderes wirksames Tool zum Verwalten von Containern unter Docker ist Portainer. Portainer bietet dem Anwender eine graphische Benutzeroberfläche, welche gerade beim Verwalten von vielen Containern nützlich ist und für Übersichtlichkeit sorgt. Werden beide Tools kombiniert, ist das Verwalten von Containerupdates leicht zu bewerkstelligen. Selbst wenn einmal ein Update fehlschlägt, so ist dies weniger schlimm als der Einsatz ungepatcher Systeme, welche als Einfallstor für potenzielle Angreifer dienen könnten.

Das Einrichten von Watchtower ist mit nur einem Befehl möglich. Natürlich muss Docker-Daemon zunächst einmal installiert sein. Die Anleitung dazu, wie man Docker unter Proxmox einrichtet, ist z.B. auf dem Youtube-Kanal "apfelcast" zu finden. Deshalb gehe ich an dieser Stelle nicht näher auf die einzelnen Schritte der Einrichtung ein.

Der Befehl für die Installation von Watchtower lautet dann wie folgt:

docker run -d --name watchtower \
-v /var/run/docker.sock:/var/run/
docker.sock \
containrrr/watchtower

Ist der Befehl eingegeben, beginnt Watchtower mit der Arbeit und sucht für alle installierten Container Updates. Sind Updates vorhanden, werden diese heruntergeladen und die Container mit dem Update neu gestartet.

Die Option "-d" bewirkt, dass der Container im Hintergrund läuft. Der Name hinter dem Zusatz "--name" ist frei wählbar. Der Zusatz von "-v" ist wichtig für die Kommunikation von Watchtower mit der Docker API, da nur so ein Monitoring der Container möglich ist.  Sollen nur selektiv Container für Updates eingebunden werden, können diese als Argument hinter dem Befehl eingereiht werden. Geschieht dies nicht, werden sämtliche Container berücksichtigt. Normalerweise arbeitet Watchtower als Daemon, soll aber stattdessen ein einmaliger Updateprozess initiiert werden, hilft die Option "--run-once". Das Argument zum Schluss übergibt den Namen des Containers, welcher unter containrrr/watchtower in der Docker-Hub-Registry zu finden ist. Interessant ist auch die Möglichkeit zur Benachrichtigung über Email, dessen Einrichtung ebenso einfach über die Kommandozeile erfolgt. Dazu reicht es aus, an den obigen Befehl folgende Zeilen hinzuzufügen:

docker run -d \
  --name watchtower \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e WATCHTOWER_NOTIFICATIONS=email \
  -e WATCHTOWER_NOTIFICATION_EMAIL_FROM=fromaddress(at)gmail.com \
  -e WATCHTOWER_NOTIFICATION_EMAIL_TO=toaddress(at)gmail.com \
  -e WATCHTOWER_NOTIFICATION_EMAIL_SERVER=smtp.gmail.com \
  -e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=587 \
  -e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=fromaddress(at)mail.com \
  -e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=app_password \
  -e WATCHTOWER_NOTIFICATION_EMAIL_DELAY=2 \
  containrrr/watchtower

Wer diesem Beispiel folgt, benötigt ein Gmail Account, welcher leicht anzulegen ist. Zu berücksichtigen ist, dass der Google Dienst für die Benutzung unsicherer Geräte eingerichtet sein muss, um zu funktionieren. Ist dies erfolgt, sendet Watchtower Statusmitteilungen an die hinterlegte Email Adresse.