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

Docker Icon

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

Porainer Logo

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:

Portainer Setup

Portainer Setup

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 Setup

Portainer Setup

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.

Portainer Home

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.).

Portainer Container Overview

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 create new container

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.

Tobi

Hallo, mein Name ist Tobias und ich habe diesen Blog im April 2009 ins Leben gerufen. Seitdem blogge ich hier über Software, Internet, Windows und andere Themen, die mich interessieren. SSDblog ist mein zweiter Blog, indem es rund um das Thema SSDs geht. Ich würde mich freuen, wenn ihr meinen Feed abonniert oder mir auf Twitter und Facebook folgt.

11 Antworten

  1. Christian sagt:

    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

  2. Finn sagt:

    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?

    • Tobi sagt:

      “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

  3. maddin sagt:

    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?

  4. Jan sagt:

    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

  5. Mario sagt:

    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

    • Tobi sagt:

      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.

  6. Root sagt:

    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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert