Portainer zur Verwaltung des Docker Dienstes
Einleitung
Bei Docker handelt es sich ja bekanntlich um einen Dienst der normalerweise über die Kommandozeile bedient wird. Über verschiedene Kommandos lassen sich Images herunterladen, Container erstellen und noch vieles mehr. Wer allerdings keine Lust hat Kommandos auswendig zu lernen oder lange Befehlsaufrufe aus verschiedenen Parametern zusammen zu stellen, der greift gerne auf eine grafische Oberfläche zurück. Bei vielen Systemen, die heutzutage Docker von Haus aus unterstützen, sind diese grafischen Benutzeroberflächen bereits integriert. Bei den gängigen NAS-Systemen wie Synology DSM, TrueNAS oder Unraid zum Beispiel, ist die Bedienung des Docker Dienstes direkt über die eigenen, webbasierten Administrationsoberflächen möglich. Doch nicht immer schöpfen diese Oberflächen die vollen Möglichkeiten, die Docker eigentlich bietet, auch aus. So ist es zum Beispiel im DSM bis heute nicht möglich Docker Containern Systemressourcen oder Devices zuzuteilen.
Was ist Portainer?
An dieser Stelle kommt Portainer ins Spiel. Portainer ist eine eigens für die Verwaltung von Docker konzipierte, webbasierte Benutzeroberfläche und wird einfach als eigener Docker Container aufgesetzt. Indem der Container Zugriff auf den Docker Socket erhält, ist es dem darin laufenden Portainer möglich andere Container zu erstellen und zu verwalten (und noch vieles mehr).
Die Community Edition (CE) von Portainer ist ein Open-Source-Projekt und steht allen Usern kostenlos zur Verfügung. Zusätzlich existiert auch eine kostenpflichtige Business Edition mit einigen interessanten Zusatzfeatures. In meinen Tutorials beziehe ich mich aber ausschließlich auf die Community Edition.
portainer-ee
Docker Image verwendet werden. Ein Upgrade von der Community Edition ist dabei problemlos möglich.Wo finde ich weitere Infos?
Bevor ich dir an einem kurzen Beispiel zeige, wie du einen Portainer Docker Container auf setzt und die Ersteinrichtung erledigst, hier noch eine kleine Linkliste zu den wichtigsten Informationen rund um Portainer:
- Portainer Website » portainer.io
- Portainer Documentation » docs.portainer.io
- Portainer Source Code & Issues » github.com/portainer/portainer
- Portainer Business Edition - Take 5 for free » portainer.io/take-5
- Portainer Comunity Edition im Docker Hub » hub.docker.com/r/portainer/portainer-ce
- Portainer Business Edition im Docker Hub » hub.docker.com/r/portainer/portainer-ee
Portainer Docker Container erstellen
Im Folgenden werden wir einen frischen Portainer Docker Container der Community Edition erstellen und dafür sorgen, dass unsere Konfiguration in einem lokalen Verzeichnis bzw. Docker Volume gespeichert wird.
Voraussetzungen
Ich gehe davon aus, dass die folgenden Voraussetzungen bereits erfüllt sind:
- Linux basierter Docker Host (NAS Systeme basieren in der Regel auf Linux)
- Zugriff auf die Kommandozeile des Docker Hosts
- Installierter und gestarteter Docker Dienst
- Internetzugang für den Docker Host
Persistente Datenspeicherung
Damit unsere Konfigurationsdaten dauerhaft gespeichert werden, benötigen wir entweder ein lokales Verzeichnis oder ein Docker-Volume auf dem Docker Host. Dieses Verzeichnis bzw. Volume mounten wir dann beim Erstellen des Docker Containers in den Pfad /data
, in dem Portainer alle Konfigurationsdaten speichert. So stellen wir sicher, dass unsere Konfigurationsdaten erhalten bleiben, auch wenn der Portainer Container gelöscht wird.
Ich persönlich bevorzuge die Speicherung der Daten meiner Container in einem Verzeichnis, statt in einem Docker Volume. Dazu lege ich mir zunächst im Verzeichnis /mnt
meines Docker Hosts ein Verzeichnis docker
an. Es tut natürlich auch jeder andere lokale Pfad, wie zum Beispiel das Home Verzeichnis deines Benutzers.
Innerhalb des docker
-Verzeichnisses erstelle ich mir dann ein Unterverzeichnis portainer_data
. Der vollständig Pfad für meine Portainer Daten lautet nun also: /mnt/docker/portainer_data
.
Portainer Container starten
Mit lokalem Verzeichnispfad
Da nun alles vorbereitet ist, erstellen wir den Container mit folgendem Befehl:
docker run -d -p 9443:9443 \
--name portainer --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /mnt/docker/portainer_data:/data \
portainer/portainer-ce:latest
Der Befehl setzt sich dabei aus folgenden Parametern zusammen:
docker run
« zum Erstellen eines neuen Containers-d
« für “detached”-p 9443:9443
« Port für den Zugriff auf die Web UI--name portainer
« Container Name--restart=always
« Restart Policy = always-v /var/run/docker.sock:/var/run/docker.sock
« Mount des Docker Sockets-v /mnt/docker/portainer_data:/data
« Mount des Datenverzeichnissesportainer/portainer-ce:latest
« Verwendetes Image und Tag
Mit Docker Volume
Falls du statt eines lokalen Verzeichnisses ein Docker Volume verwenden willst, kannst du mit dem folgenden Befehl ein Volume mit dem Namen portainer-data
erstellen:
docker volume create portainer-data
Den Portainer Container startest du in diesem Fall dann mit:
docker run -d -p 9443:9443 \
--name portainer --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer-data:/data \
portainer/portainer-ce:latest
Zugriff auf die Portainer Web UI
Nachdem der Container gestartet ist, können wir auf die Weboberfläche des Portainer zugreifen, indem wir die URL nach folgendem Schema aufrufen:
https://[IP oder Hostname]:9443
Wenn alles korrekt ausgeführt wurde, erscheint die folgende Seite:
Hier können wir Portainer aus einem Backup wiederherstellen oder einfach mit einer frischen Portainer Installation starten, indem wir einen neuen Benutzer für die Administration anlegen.
Nach einem Klick auf “Create user” landen wir im “Quick Setup”.
Mit einem Klick auf “Get Started” ist das “Quick Setup” auch schon erledigt, und wir landen in der Übersicht unseres Portainers.
Unser Portainer ist nun startklar.
Da sich mit einer Portainer Weboberfläche mehrere Docker Hosts (Environments) verwalten lassen, müssen wir zum Anlegen unseres ersten Containers noch unser Environment auswählen. Dies tun wir mit einem Klick auf “local” oder auf den Button “Live connect”.
Ich hoffe ich konnte dir mit diesem Beitrag einen kleinen Überblick über Portainer und dessen Inbetriebnahme geben.
Für Fragen und Feedback nutze gerne die Kommentarfunktion zu diesem Beitrag.
MfG,
André