Ich habe mich etwas wundgesucht bezüglich einer einfachen Anleitung, wie man denn einen Portainer sauber auf einer QNAP Containerstation installieren kann, ohne viel Putty und SSH. Anschliessend soll eine Watchttower Instanz diesen Portainer updaten können.
Grundsätzlich sollte man diese Container über den Dialog in der Container-Station anlegen können, dabei fiel mir auf, dass es so nicht möglich ist, die Variable /var/run/docker.sock sauber einzuarbeiten - weder für Portainer noch für Watchtower.
Als Grundlage dient einzig und alle ein neues oder vorhandenes Verzeichnis für die Container-Daten (da man diese ja immer behält, während man den Container ersetzt):
Ich habe mir anschliessend überlegt, diese beiden Management-Container per docker compose anzulegen, was ich wie folgt gemacht habe:
Der Portainer wird so angelegt auf Port 9000 per NAT d.h. kann über die primäre IP des NAS erreicht werden. Die Konfigurationsdaten sind wie oben erwähnt ausgelagert nach /share/Container/data/Portainer (NAS) per mapping nach /data (Container):
Der folgende Code ist korrekt. Aber die Container-Station beschwert sich manchmal gerne, wenn man Code von irgendwoher kopiert. Verwende einfach einen Texteditor.
version: '3'
services:
portainer:
container_name: Portainer
image: portainer/portainer-ce
restart: always
ports:
- "9000:9000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /share/Container/data/Portainer:/data
Alles anzeigen
Der folgende Container erstellt eine Watchtower Instanz mit einer einzigen Aufgabe: Nach manuellem Start wird die Portainer Version geprüft und im Falle eines verfügbaren Updates der Portainer erneuert und das alte Image gelöscht. Mehr nicht.
Warum manuell? Damit nicht im Hintergrund ein Container 24*7 läuft wobei, das bei einem NAS ja nicht so viel ausmacht...
version: '3'
services:
portainer:
container_name: Watchtower
image: containrrr/watchtower
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- WATCHTOWER_CLEANUP='true'
- WATCHTOWER_RUNE_ONCE='true'
Alles anzeigen
Nun kann für das weitere Container-Management natürlich der Portainer benutzt werden.