Raspberry Pi – Docker und Portainer installieren
Wer öfter neue Anwendungen für seinen Raspberry Pi installiert und diese schnell und einfach testen und verwenden möchte, landet früher oder später bei der Nutzung von Containern. Container sind standardisierte Einheiten, die alle notwendigen Dateien enthalten, welche zum Ausführen einer Software erforderlich sind. Neben der Anwendung an sich laufen also auch Bibliotheken, Systemwerkzeuge, Code und Laufzeit im Container.
Docker ist eine Software für das Management von Containern. Mit Hilfe von Docker lassen sich Anwendungen in jeder Umgebung schnell und einfach bereitstellen. Eine hervorragende Ergänzung dazu ist Portainer. Kurz gesagt handelt es sich bei Portainer um eine grafische Benutzeroberfläche für Docker. Damit lässt sich die gesamte Docker-Infrastruktur intuitiv verwalten, was vor allem für Einsteiger ein gewaltiger Vorteil ist. Aber auch erfahrene Nutzer wissen das übersichtliche Management zu schätzen.
Das Konstrukt Docker und Portainer ist schnell aufgesetzt und eine wirklich tolle Umgebung, um mit Containern zu arbeiten. Also perfekt für unseren Raspberry Pi!
Raspberry Pi aktuell halten
Zunächst solltet ihr sicherstellen, dass alles auf dem aktuellsten Stand ist. Dazu müsst ihr die Paketquellen aktualisieren und alle installierten Programme updaten. Anschließend noch den Kernel und die Firmware aktualisieren. Zum Schluss den Raspberry Pi unbedingt neustarten.
sudo apt update
sudo apt upgrade
sudo rpi-update
sudo reboot
Docker Installation
Die Installation von Docker wird über ein Skript durchgeführt. Dieses wird direkt von Docker zur Verfügung gestellt und führt alle Schritte automatisch ohne weitere Eingaben vom Benutzer durch. Nach wenigen Minuten ist Docker betriebsbereit.
curl -sSL https://get.docker.com | sh
Nach der Installation solltet ihr noch euren Benutzer in die Gruppe “docker” mit aufnehmen, damit ihr ohen root-Rechte mit Docker interagieren könnt. Der zweite Befehl stellt sicher, dass die Änderung wirksam wird. Alternativ hilft aus- und wieder einloggen.
sudo usermod -aG docker $USER
newgrp docker
Zur Überprüfung, ob die Installation erfolgreich verlaufen ist und Docker funktioniert, lassen wir uns die installierte Version anzeigen.
docker version
Portainer Installation
Portainer ist im offiziellen Docker Hub als Container erhältlich. Der Befehl holt die aktuellste Version des Portainer-Images für ARM-Prozessoren (genau diese benötigen wir für den Rasperry Pi).
sudo docker pull portainer/portainer-ce:linux-arm
Jetzt wird ein neuer Container gestartet, in dem Portainer läuft.
sudo docker run --restart always --name=portainer -d -p 9443:9443 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:linux-arm --http-disabled
Nach kurzer Zeit ist Portainer bereit und ihr könnt das Webinterface über den HTTPS-Port 9443 und die IP des Rasperry Pis erreichen. Zum Beispiel: https://192.168.180.100:9443
Dort müsst ihr zunächst einen User und das dazugehörige Passwort anlegen:
Im zweiten Schritt wählt ihr “Docker” aus und klickt unten auf den Button “Connect”. Den Hinweis könnt ihr ignorieren, da wir bereits alles richtig gestartet haben.
Portainer verwenden
Auf der Startseite könnt ihr direkt die wichtigsten Infos einsehen. In meinem Beispiel läuft ein Docker-Container und es liegen keine Probleme vor.
Fahren wir direkt mit der wohl wichtigsten Seite fort. Unter “Containers” seht ihr eine Liste aller Container.
Bei 1. findet ihr detaillierte Infos zum jeweiligen Container wie zum Beispiel der aktuelle Status, das verwendete Image, wann der Container erstellt wurde, die verwendete interne IP-Adresse und die verwendeten Ports. Sobald ein Container selektiert ist, kann dieser unter anderem gestartet, gestoppt oder gekillt werden (2.). Mit Klick auf den Button “Add container” kann ein neuer Container erstellt werden (3.).
Zuerst benötigt der neue Container einen Namen. Im Beispiel nenne ich ihn “Adguard”. Im zweiten Schritt muss das gewünschte Image angegeben werden. Die genaue Bezeichnung lässt sich via Docker Hub herausfinden. Unter “Network ports configuration” lassen sich die Ports (Host + Container) definieren. Die Beschreibung bei Docker Hub liefert hier oft nähere Informationen. In vielen Fällen reicht auch das Setzen der Option “Publish all exposed network ports to random host ports”, dann werden alle vom Container benötigten Ports zufällig vergeben. Unter “Access control” kann der Zugriff auf den Container im Portainer Webinterface eingeschränkt werden. Des Weiteren lassen sich ganz unten eine Menge zusätzlicher Einstellungen konfigurieren. Die wohl wichtigste Option ist die “Restart Policy”. Damit legt ihr fest, was mit dem Container passieren soll, wenn euer Raspberry Pi neustartet.
Sobald alle Einstellungen getroffen sind, kann der neue Container mit Klick auf “Deploy the container” erstellt werden.
Portainer aktualisieren
Zum Aktualisieren auf eine neue Version müsst ihr Portainer zunächst stoppen und dann entfernen. Keine Angst, eure Daten und die anderen Container werden dadurch nicht beeinflusst.
docker stop portainer
docker rm portainer
Anschließend wird das lokale Portainer-Image aktualisiert und Portainer danach wieder deployed.
sudo docker pull portainer/portainer-ce:linux-arm
sudo docker run --restart always --name=portainer -d -p 9443:9443 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:linux-arm --http-disabled
Danach könnt ihr euch wieder wie gewohnt am Webinterface anmelden.
Sie sehen gerade einen Platzhalterinhalt von X. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr Informationen
Hallo Tobi,
danke für das hilfreiche Tutorial. Es funktioniert alles wie beschrieben. Allerdings sobald ich meinen Raspberry neustarte lässt sich portainer nicht mehr aufrufen und Docker funktioniert auch nicht mehr.
Beim starten mit “sudo systemctl start docker” erhalte ich folgende Fehlermeldung “A dependency job for docker.service failed. See ‘journalctl -xe’ for details.”
Ich benutze ein Raspberry pi 3b+ mit Raspbian Lite. Hast du eine Idee woran es liegen könnte, dass es nachdem Neustart nicht mehr funktioniert ?
Habe bereits öfters den Pi neu aufgesetzt und es passiert immer das gleiche..
Gruß
Christian
Hat sich erübrigt, scheinbar liegt die Problematik in der Lite Version.
Nutzt du Raspbian Lite oder Raspberry Pi OS Lite? Falls du noch beim ersteren bist, solltest du auf die aktuellere Version wechseln.
Hallo Tobi,
vielen Dank für deinen Beitrag. Lieder komme ich nicht weiter. Wenn ich auf meinem Pi den Befehl
sudo docker pull portainer/portainer-ce:linux-arm
eingebe bekomme ich folgende Meldung:
no matching manifest for linux/arm64/v8 in the manifest list entries
Ich habe es dann mit
sudo docker pull portainer/portainer:linux-arm
versucht, das geht auch dann, jedoch kommt folgende Meldung wenn ich den Container starte:
WARNING: The requested image’s platform (linux/arm/v7) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
Hast du einen Tipp für mich, wie ich am besten vorgehen soll?
“portainer-ce” passt auf jeden Fall, da es sich um die Community-Edition handelt.
Vermutlich hast du die 64-Bit-Variante von Raspberry Pi OS installiert. Probiere es mal mit:
sudo docker pull portainer/portainer-ce:linux-arm64
Hi, tolles Tutorial. Ich habe mal ne kurze Verständnisfrage. Wenn ich Portainer wie beschrieben installiere, kann ich dann auch docker-compose Befehle nutzen, um in Portainer diese “Befehle” zu verwenden? Muss ich dazu auch noch docker-compose installieren?
Ja Docker Compose musst du ebenfalls installieren. Die Befehle kannst du dann innerhalb Portainer nutzen. Hier gibts weitere Details: https://www.portainer.io/blog/stacks-docker-compose-the-portainer-way
Hi,
danke für das tolle Tutorial!
Bei mir lässt sich Portainer nicht per https aufrufen. Muss ich eventuell noch irgendein Zertifikat installieren?
Grüße
Hallo, ich habe das gleiche Problem wie maddin,
wenn ich deinem Vorgehen folge, kann ich zwar Protainer starten, bekomme aber die gleiche Fehlermeldung beim Anlegen von WordPress. Die Datenbank startet nicht!
Auch deine Idee mit 64 Bit habe ich probiert – funktioniert gar nicht :-(
Mit uname – a
bekomme ich folgendes angezeigt -> armv7 -< habe also nicht die 64 Bit Version oder?
Linux raspberrypi 5.10.103-v7l+ #1529 SMP Tue Mar 8 12:24:00 GMT 2022 armv7l GNU/Linux
Hast du noch eine andere Idee?
Danke DIr
Du meintest Finn, oder? maddin hatte eine Frage zu Docker Compose.
Probier mal nach “sudo docker run” noch ein “–platform=linux/arm/v7” hinzuzufügen.
Hallo.
Bin auf dem o. g. Port mit meiner IP Adresse drauf, man sieht leider nichts.
Seite lädt nicht.
This site can’t be reached