
Docker und Portainer in wenigen Schritten unter Debian und Raspberry Pi installieren
Ich habe mich die vergangenen Tage mal an Docker herangewagt. Docker ist ein Werkzeug, mit dem man unter Linux Anwendungen in Container verpackt laufen lässt. Diese Container werden aus fertigen Images gestartet.
Docker wird im Terminal genutzt, wem das zu kompliziert ist oder wer es übersichtlicher mag, kann zusätzlich Portainer installieren. Portainer ist eine grafische Benutzeroberfläche im Webbrowser, mit der man seine Docker-Container, Images und Einstellungen bequem per Mausklick verwalten kann.
Beides ist wirklich ruckzuck aufgesetzt und sofort einsatzbereit. Die Anleitung kann sowohl für den Raspberry Pi mit Raspberry Pi OS - in meinem Fall Raspberry Pi OS Lite (64-bit) - als auch für Debian-Systeme genutzt werden.
Diese Anleitung ist für den lokalen Einsatz im heimischen Netzwerk gedacht.
Zuerst das Terminal öffen und per SSH mit Usernamen (XXXXX)/Password einloggen:
ssh XXXXX@192.168.0.91
oder wie in meinem Fall:
ssh XXXXX@test.local
Das System auf dem neuesten Stand bringen:
sudo apt update
sudo apt upgrade
Dann das Docker-Installationsskript herunterladen:
curl -fsSL https://get.Docker.com -o get-Docker.sh
Wenn an dieser Stelle die Meldung erscheint, das curl nicht vorhanden ist, curl installieren:
sudo apt install curl
und dann erneut ausführen:
curl -fsSL https://get.Docker.com -o get-Docker.sh
Nun das heruntergeladene Script get-docker.sh ausführen (die Installation dauert einen Moment, auf meinem Raspi 4B mit 4GB RAM ca. 70 Sekunden):
sudo sh get-Docker.sh
Den aktuellen Benutzer zur Gruppe docker hinzufügen und sofort wirksam machen:
sudo usermod -aG docker $USER
newgrp docker
Mit einem minimalem Test-Container prüfen, ob die Docker-Installation funktioniert:
docker run hello-world
Die Meldung "Unable to find image 'hello-world:latest' locally" ist keine Fehlermeldung, da dass Image erst noch heruntergeladen werden muss. Wenn u.a. die Meldung "Hello from Docker!" erscheint, war die Installation erfolgreich.

Die Docker-Installation ist hiermit abgeschlossen.
Optional kann nun noch Portainer installiert werden:
docker volume create portainer_data
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
Auch hier ist die Meldung "Unable to find image 'portainer/portainer-ce:latest' locally" kein Grund zur Sorge, das Image wird hier runtergeladen.
Portainer kann nun über die URL https://192.168.0.91:9443 bzw. wie in meinem Fall unter https://test.local:9443 aufgerufen werden. Die Meldung, dass es sich hierbei um keine sichere Verbindung handelt, darf man an dieser Stelle getrost ignorieren, in dem man auf "Erweitert" und dann auf "Risiko akzeptieren und forfahren" (Firefox, kann in anderen Browsern anders heißen) klickt.


Nun muss einmalig der Admin-User für Portainer angelegt werden. Danach kann man sich einloggen.

Wird diese Erst-Einrichtung nicht binnen 5 Minuten durchgeführt, bekommt man beim Aufruf der Portainer-Seite folgende Meldung:
Your Portainer instance timed out for security purposes. To re-enable your Portainer instance, you will need to restart Portainer.
Um diese Meldung zurückzusetzen und die Erst-Einrichtung von Portainer abzuschließen, folgende Befehle ausführen:
docker stop portainer
docker start portainer
Nun kann man den Admin-Account für Portainer einrichten und sich einloggen.

Somit ist die Portainer-Installation abgeschlossen.
Klickt man links im Menü auf "Containers", sieht man zum einen den Container "portainer" (Image: portainer/portainer-ce:latest), zum anderen das Image "hello-world". Der Name dieses Image wird zufällig generiert (bei mir hieß der Container "adoring_wiles").

Da "hello-world" nur einmalig zum testen war, hat sich dieser Container nach der Ausführung automatisch wieder beendet, weshalb dieser in der Container-Liste bei "State" mit "exited - code 0" aufgeführt ist. Dies ist kein Fehler, sondern richtig, da der Container ja nicht läuft. Sofern man diesen nicht benötigt, kann "hello-world" gelöscht werden.
Für evtl. Updates oder zur Überprüfung des Status:
Die aktuelle Version von docker wird mittels:
docker version
angezeigt, der aktuelle Status von Docker mit dem Befehl:
systemctl status docker