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 8000:8000 -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 8000:8000 -p 9443:9443 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:linux-arm --http-isabled

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.

Schreibe einen Kommentar

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