Nach vielen Versuchen mit unterschiedlichen Konfigurationen, habe mich vor 3 Jahren dazu entschieden mein SmartHome in Docker Containern zu betreiben.
Der Vorteil ist hier auf jeden Fall die Trennung der Konfiguration von der Applikation.
Das macht die Updates einfacher und die einzelnen Module lassen sich gut strukturieren. In der Zeit vor Docker hatte ich immer wieder mit Fehl Konfiguration des Linux Rechners zu tun, was dann eine Neuinstallation zur Folge hatte.
Installationsschritte
- Update des Betriebssystem
- Download des Installationsskriptes und Installation
- Erlaubnis für Non Root User, Docker Kommandos auszuführen
- Überprüfen der Docker Installation
- Installation „Portainer“ zur Administration
Für das Tutorial nutze ich den Rechner „raspy3“ und den Benutzer „pi“
Update und Upgrade
Login auf den Rechner - ssh pi@raspy3
pi@raspy3:~ $ sudo apt-get update && sudo apt-get upgrade
Das kann ein wenig dauern. Die Abfragen für den positiven Fortgang beantworten.

Installation Docker
Zuerst das Docker Installations script laden
curl -fsSL https://get.docker.com -o get-docker.s
Das heruntergeladene Script wird dann ausgeführt
sudo sh get-docker.sh

Im Normalfall hat nur der ROOT User die Berechtigung die Container zu verwalten. Solltest Du nicht als ROOT eingeloggt sein, erhälst Du die Rechte mit dem „sudo“ Befehl.
Um das zu vereinfachen wird der gewünschte Benutzer der Gruppe docker zugefügt.
sudo usermod -aG docker <username>

Überprüfen der Docker Version
docker version
Installation Portainer
Ich bin ein Freund graphischer Interfaces. So auch hier in docker.
Als Adminstrations Werkzeug ist Portainer sicher die gängigste Applikation.
Ich verwende zur Ablage der Konfigurationsdaten immer das lokale Dateisystem und keine Docker Volumes. Vielleicht ist das manchmal etwas aufwendiger, aber für mich einfacher zu administrieren.
Alle meine Docker Konfigurationen werden unter „/usr/share“ abgelegt.
sudo mkdir /usr/share/portainer
Bash Funktion
Für die Installation / Update des Portainers habe ich mir in „~/.bash_aliases“ eine Funktion geschrieben
function update_portainer {
local fileshare="/usr/share/portainer"
local container="Portainer"
local image="portainer/portainer-ce"
docker pull $image
docker container stop $container
docker rm $container
docker run -d -p 8000:8000 -p 9000:9000 --name="$container" -v /var/run/docker.sock:/var/run/docker.sock -v $fileshare:/data $image
}
Installationskommando
update_portainer
oder
docker run -d -p 8000:8000 -p 9000:9000 --name="Portainer" -v /var/run/docker.sock:/var/run/docker.sock -v Uusr/share/portainer:/data portainer/portainer-ce
Portainer aufrufen
https://<hostname>:9000

Weiterführend
Gute Tipps zum Thema Docker habe ich hier gefunden