Portainer Tutorial (für Version 2.x)
In der heutigen Welt, in der Containerisierung und die Nutzung von Docker für viele Entwickler und IT-Experten zum Alltag gehören, ist es entscheidend, effiziente und benutzerfreundliche Tools zu haben, um diese komplexen Systeme zu verwalten. Hier kommt Portainer ins Spiel – ein leistungsstarkes und intuitives Verwaltungstool, das die Arbeit mit Docker-Containern und -Stacks erheblich vereinfacht. Portainer bietet eine grafische Benutzeroberfläche (GUI), mit der sowohl Anfänger als auch erfahrene Entwickler ihre Container, Images, Netzwerke und Volumes verwalten können, ohne tief in die Kommandozeile eintauchen zu müssen.
In diesem Portainer-Tutorial führen wir dich Schritt für Schritt durch die Installation, Einrichtung und die wichtigsten Funktionen des Tools. Egal, ob du gerade erst in die Welt der Containerisierung einsteigst oder bereits Erfahrung mit Docker hast – dieses Tutorial hilft dir, Portainer effektiv zu nutzen, um deine Container-Infrastruktur effizienter und übersichtlicher zu gestalten. Am Ende wirst du in der Lage sein, deine Docker-Umgebung problemlos zu überwachen, zu konfigurieren und zu steuern. Mach dich bereit, deine Docker-Workflows auf das nächste Level zu heben!
Voraussetzungen
Voraussetzungen für dieses Portainer Tutorial gibt es eigentlich fast keine. Wir beschränken uns in diesem Beitrag allerdings auf die Verwaltung von Docker. Entsprechend solltest du ein Linux-Server mit installiertem Docker vorbereitet haben. Alles weitere werden wir zusammen erarbeiten.
Installation von Portainer
Eine wirkliche Installation findet ja nicht statt. Wir starten Portainer als Docker Container und müssen uns eigentlich nur gegen diesen verbinden. Du findest eine vorgefertigte docker-compose.yaml-Datei in meiner Compose-Sammlung. Die für die Docker GUI sieht zum Beispiel so aus.
---
version: '3.3'
services:
portainer:
image: portainer/portainer-ce:2.11.1
container_name: portainer
restart: unless-stopped
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /var/run/docker.sock:/var/run/docker.sock
- /var/docker/portainer:/data
ports:
- 9000:9000
Den Datenspeicherort der Portainer-Konfiguration kannst du dir natürlich nach Belieben anpassen (4. Zeile bei den Volumes). Anschließend können wir den Container auch schon starten.
docker compose up
Nach ein paar Sekunden sollte die Anwendung dann vollständig gestartet sein.
portainer | INFO 2022/03/22 18:18:21 Encryption key file `portainer` not present
portainer | INFO 2022/03/22 18:18:21 Proceeding without encryption key
portainer | INFO 2022/03/22 18:18:21 Loading PortainerDB: portainer.db
portainer | level=info msg="2022/03/22 18:18:21 [INFO] [internal,ssl] [message: no cert files found, generating self signed ssl certificates]"
portainer | 2022/03/22 18:18:22 server: Reverse tunnelling enabled
portainer | 2022/03/22 18:18:22 server: Fingerprint 8f:41:d0:fc:b7:fe:45:23:9d:f1:31:5d:70:f8:38:76
portainer | 2022/03/22 18:18:22 server: Listening on 0.0.0.0:8000...
portainer | INFO 2022/03/22 18:18:22 [INFO] [cmd,main] Starting Portainer version 2.11.1
portainer |
portainer | level=info msg="2022/03/22 18:18:22 [INFO] [http,server] [message: starting HTTPS server on port :9443]"
portainer | level=info msg="2022/03/22 18:18:22 [DEBUG] [chisel, monitoring] [check_interval_seconds: 10.000000] [message: starting tunnel management process]"
portainer | level=info msg="2022/03/22 18:18:22 [DEBUG] [internal,init] [message: start initialization monitor ]"
portainer | level=info msg="2022/03/22 18:18:22 [INFO] [http,server] [message: starting HTTP server on port :9000]"
Ab jetzt können wir mit der Einrichtung beginnen.
Einrichtung von Portainer
Hierzu öffnen wir einen neuen Tab im Browser (oder gern auch ein neues Fenster) und geben die IP-Adresse des Docker-Servers gefolgt vom Port ein. Uns sollte so etwas begrüßen.
Wenn du möchtest, kannst du den Administrator-Account gerne einen anderen Nutzernamen geben. Andernfalls lass einfach das „admin“ in der ersten Zeile stehen. Anschließend tippst du bitte zwei Mal ein selbst gewähltes Passwort ein. Nun noch unten auf „Create user“ klicken und schon erscheint der nächste Bildschirm.
Solltest du mehrere Docker Server damit verwalten wollen, wäre „Add Environment“ das Richtige. Allerdings wollen wir in diesem Portainer Tutorial lediglich den lokalen Docker Server verwalten. Wir klicken also auf „Get Started“ und landen direkt beim nächsten Fenster.
Es werden hier eine Liste der möglichen Docker-Umgebungen dargestellt. Da wir natürlich nur auf die Lokale Zugriff haben, können wir nur „local“ auswählen. Genau dieses wollen wir natürlich auch.
Anschließend ist die Einrichtung auch schon abgeschlossen.
Anwendungen hinzufügen
Docker Container bzw. die Anwendungen werden als Stack in Portainer verwaltet. Entsprechend ist die Benennung hier ein wenig anders als du das vielleicht gewohnt bist. In diesem Portainer Tutorial gehe ich auf zwei Methoden ein eine neue Anwendung hinzuzufügen, nämlich per copy & paste der docker-compose.yaml-Datei und per Import von GitHub.
Per Copy & Paste
Diese Methode ist wohl die einfachste. Du kannst bestehende docker-compose.yaml-Dateien fast immer einfach hier rein kopieren. Allerdings ist aufzupassen, dass keine Variablen verwendet werden. Diese können in der Methodik nämlich nicht ausgefüllt werden. Gegebenenfalls ersetzt du einfach die Variablen durch die eigentlichen Werte, dann funktioniert das auch.
Als erstes vergeben wir einen Namen. Dieser Name ist eineindeutig für die jeweiligen Umgebungen. Zudem dürfen keine Umlaute oder Leerzeichen verwendet werden. Binde- oder Unterstriche, wie im Beispiel zu sehen, sind natürlich erlaubt.
Für dieses Beispiel deployen wir das Ghost CMS. Wir nehmen also einfach eine docker-compose.yaml-Datei (wie diese aus meiner Sammlung) und fügen den Inhalt einfach ein.
In unserem einfachen Beispiel müssen wir nichts weiter beachten und lassen alle anderen Felder und Möglichkeiten außer Acht. Wir müssen also nur noch auf „Deploy the stack“ klicken und Portainer zieht das Image aus der Registry und startet den Container.
So einfach war die Copy & Paste-Methode. Anschließend fügen wir jetzt noch eine compose-Datei aus GitHub hinzu.
Compose Datei aus GitHub
Diese Methode kann verwendet werden, wenn man keine Lust auf Copy & Paste hat. Allerdings hat sie nicht wirklich große Vorteile. Zumal der Stack dann auch nicht vollständig über Portainer verwaltet werden kann. Auf der anderen Seite wird der Stack über die originale Datei auf GitHub synchronisiert und entsprechend aktuell gehalten (wenn man das möchte).
Auch hier geben wir dem Stack einen Namen.
Natürlich kann hier jede Art von git-Repository verwendet werden. GitHub ist nur das prominenteste Beispiel der Cloud Anbieter für git-Repositories.
Als Repository-URL gibst du den Standardpfad bzw. URL des Repos ein. Das ist meist die Startseite. Die „Repository reference“ kannst du leer lassen, denn diese nimmt immer die Dateien aus dem Master Branch. Wenn du das nicht möchtest, weißt du sicherlich selbst, was du hier einzutragen hast.
Der „Compose path“ ist im Standard nur eine einfach „docker-compose.yml“-Angabe. Ich habe für dieses Beispiel eine Anwendung aus meiner Sammlung genommen und muss entsprechend den Pfad dorthin genau angeben.
Auch hier müssen wir anschließend nur auf „Deploy the Stack“ unten klicken und schon wird die compose-Datei aus dem Repo geklont und die Anwendung deployt.
Fazit
Portainer erweist sich als unverzichtbares Tool für jeden, der mit Docker arbeitet, egal ob Anfänger oder erfahrener Profi. Durch seine benutzerfreundliche grafische Oberfläche wird die Verwaltung von Containern, Images und Netzwerken erheblich vereinfacht, ohne dabei auf Flexibilität und Funktionsvielfalt zu verzichten. Besonders vorteilhaft ist, dass Portainer nicht nur für kleinere Umgebungen, sondern auch in größeren, produktiven Setups problemlos einsetzbar ist. Es hilft, komplexe Docker-Architekturen übersichtlich zu strukturieren und bietet umfassende Verwaltungs- und Überwachungsmöglichkeiten, die weit über das hinausgehen, was die Kommandozeile bietet.
In diesem Tutorial haben wir die Grundlagen von Portainer beleuchtet – von der Installation über die wichtigsten Funktionen bis hin zu praktischen Anwendungsszenarien. Damit solltest du nun bestens gerüstet sein, Portainer in deinem eigenen Docker-Setup erfolgreich einzusetzen und deine Workflows effizienter zu gestalten.
Abschließend lässt sich sagen, dass Portainer nicht nur Zeit und Mühe spart, sondern auch dazu beiträgt, die Container-Verwaltung sicherer und kontrollierter zu gestalten. Wer Docker nutzt, sollte Portainer als Ergänzung auf jeden Fall in Betracht ziehen, um das Beste aus seiner Container-Umgebung herauszuholen.