Du brauchst ein Portainer Tutorial?
Dieser Guide gibt Dir eine einfache Einführung.
Alle Portainer-Eigenheiten erklärt dieser Guide!
Starten wir!
Was ist Portainer? – Einfache Erklärung
Die Software Portainer hilft Dir bei der Verwaltung von Deinen Docker-Contianer, Azure ACI, Nomad und Kubernetes. Diese Software bieten ein Kommandzeileninterface an, worauf Portainer einem User Interface setzt. Portainer kannst Du selbst als Docker Container hosten und im Browser bedienen.
Die Software setzt den Fokus auf dem Management von mehreren (verschiedenen) Servern von einer zentralen Maschine aus. Eigene Konzepte wie der „Stack“ versuchen komplexere Docker Swarm Konzepte zu „vereinfachen“.
Was ist Docker?
Die Software Docker gehört zu den Container-Virtualisierungen. Statt eine ganze virtuelle Maschine mit einem vollwertigen Betriebssystem auf dem Hostsystem hochzufahren, spart ein Container Ressourcen für die laufenden Anwendungen. Er teilt sich die Ressourcen mit dem Host-System.
In diesen Ausführungsumgebungen laufen die Anwendungsprogramme, welche nur die notwendigen Software-Abhängigkeiten erhalten. Die Containerisierung erlaubt ein sehr flexibles Betreiben von der IT-Infrastruktur.
Docker ermöglicht es mehrere Instanzen einer Anwendung und Loadbalancer auf einer potenten Maschine zu betreiben, ohne dass sich die Instanzen gegenseitig stören.
Was ist Docker Swarms?
Das System „Docker Swarms“ arbeitet als ein Verwaltungssystem, ähnlich wie Kubernetes und OpenShift. Diese nennt sich Container-Orchestration.
Der Swarm Manager überwacht die Instanzen und startet neue, wenn einzelne abrauschen (Fehlerfall).
Die Overlay-Netzwerke spannen über alle Container-Nodes auf allen physischen Computern ein internes Netzwerk. Dieses virtuelle Netzwerk funktioniert ohne eine externe Netzwerk-Config voll virtualisiert. Transport Layer Security (TLS) schützt die Kommunikation zwischen den physischen Computer, sodass kein Dritter mitschneiden kann.
Warum Portainer nutzen
#1 Du brauchst mehr Übersichtlichkeit
Die Software Docker ist eine Command Line Interface und nur mit der Nutzung des Terminals verwendbar. Weil kein Command Line Interface wegen des Getippes umständlich ist, ist eine grafische UI besser.
Wenn Du mehr als einen Container auf Deiner Maschine gleichzeitig laufen lässt, können die CLI Kommandos schnell unübersichtlich sein. Portainer unterstützt Paging, formatierte Tabellen und verschiedene Interaktionen mit diesen:
- Starten / Stoppen / Löschen
- In Bash des Containers springen
- Logs auslesen
- Metadaten anzeigen
#2 Einfache Steuerung für mehr Effizienz
Einige Routinearbeiten lassen sich mit einer grafischen Nutzeroberfläche einfacher nutzen. Dazu gehört z. B. das Starten und Stoppen der Docker Swarms oder das Auslesen der Logs. Über CLI Kommandos kannst Du das Gleiche erreichen, aber brauchst länger (trotzt Deiner 500 Anschläge pro Minute).
#3 Arbeiten auf mehreren Servern gleichzeitig
Portainer arbeitet lokal auf Deinen Computer und von dort aus administrierst Du mehrere physische Server gleichzeitig. Statt tausende Terminal-Fenster zu öffnen und gleiche Befehle immer wieder auszuführen, kannst Du mit der Portainer-Nutzeroberfläche mehr in kürzerer Zeit schaffen.
Der Portainer Guide
Vorbereitung
Zuerst brauchst Du Docker auf Deinem Server / Workstation. Installiere die Docker.exe für eine Windows-Maschine oder in einem Debian-basierten System mit dem Packet-Manager Aptitude docker.io
sudo apt-get install docker.io
Die Software Portainer managt nicht nur Docker-Container, sondern ist selbst ein Docker Container. Am einfachsten startest Du einen Docker-Container mit einer docker-compose Datei. Diese Datei beinhaltet alle Konfigurationen und Einstellungen für den Docker-Container.
Installiere im zweiten Schritt die das Docker Plugin docker-compose
:
sudo apt-get install docker-compose-plugin
Portainer kannst Du als einfache Docker Kommando starten:
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-ee:latest
Mit dem Befehl docker ps
solltest Du dann den neuen Container nach ein paar Minuten sehen.
Entdecke die Nutzeroberfläche
Gehe zu https://localhost:9443
Erstelle ein Nutzer-Account mit Name und Passwort.
Jetzt kannst Du Portainer lokal nutzen, um Deine Docker-Arbeit übersichtlich zu erledigen. Alternativ kannst Du jetzt weitere Umgebungen hinzufügen. Als Umgebungen gelten die physischen Computer / Server auf denen Docker, Kubernetes oder andere Virtualisierungsumgebungen laufen. Die Umgebungen brauchen eine Docker Installation.
Ein normale Portainer Installation ist nicht notwendig, sondern eine Portainer-Agent-Installation.
Der Agent empfängt vom Master (Deine Workstation) Befehle, welche Container wie zu erstellen sind. Du kannst Dich auch direkt auf dem Node einwählen (über die Portainer UI). Der Nachteil ist, dass Du die Docker-Container von dem Server Node nicht verwaltbar sind.
Bevor Docker-Container über mehrere Server / Computer-Nodes hinweg sprechen kann, erstellst Du erst ein Overlay Netzwerk, welches ein virtuelles, internes Docker-Netzwerk ist. Diese verbindet die Docker-Container Computer übergreifend. Der Service mit dem Docker-Agenten verwaltet dann die Docker auf der physischen Maschine.
docker network create \ --driver overlay \ portainer_agent_network
docker service create \
--name portainer_agent \
--network portainer_agent_network \
-p 9001:9001/tcp \
--mode global \
--constraint 'node.platform.os == linux' \
--mount
type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \
--mount
type=bind,src=//var/lib/docker/volumes,dst=/var/lib/docker/volumes \
portainer/agent:2.15.1
Portainer Menu Optionen
Übersicht ist wichtig – Dashbaord
Das Dashboard zeigt die wichtigsten Kennzahlen zu Deinem Host-Rechner an. Wie viele Images, Volumes oder Netzwerke sind gespeichert? Wie leistungsstark ist die Maschine / Server (RAM, CPUs, GPUs)? Sind virtuelle Netzwerke vorhanden?
Für allen Faulen – App Templates
Die App Templates sind vorgefertigte Portainer Konfigurationen, welche Du mit wenig Aufwand installieren kannst. Statt 10 Stunden an der perfekten Konfiguration für einen Container herumzuflicken, laufen die Vorlagen (App Templates) in der Regel sofort. Achte auf die Architektur Deines Rechners.
Bitte keine Daten verlieren – Volumes
Docker Container speichern keine Nutzerdaten. Wenn Du den Container herunterfährst, verschwinden alle Änderungen. Die Docker Volumes lösen dieses Problem. In einem zentralen Ordner speichert Docker alle Volumes.
Apps fertig serviert – Images
Docker Images sind binär Blobs, welche die Programme, Umgebungsvariablen, Abhängigkeiten und Konfigurationen enthält. Die Images müssen kompatibel für Dein System sein: x86, ARM oder altere Architekturen. Nicht für jedes Image gibt es für jede Architektur etwas (Raspberry Pi 32 Bit).
Lasse babbeln – Networks
Docker bietet ein internes Docker-Netzwerk an. Statt physische Computer mit Netzwerk-Kabeln zu verbinden, verwaltest Du ein internes Netzwerk virtuell. Docker ist ein Rechenzentrum in einem Computer – alles virtualisiert. So kannst Du Container abkapseln, Subnetze bilden und die Kommunikation zwischen den Containern ermöglichen. Du musst kein physisches Kabel stecken und die Programme laufen unabhängig voneinander.
Praktische Stacks
Das Portainer eigene Konzept „Stacks“ basiert auf einer Docker-Compose Datei, welche als einen Docker-Swarm fungieren. Rauscht eine Instanz von einem Stack ab, startet Portainer eine neue Instanz. Ein Portainer-Stack schafft kein docker build
, den Du in Deine Compose integrieren hast. Du musst erst das Image auf der lokalen Maschine bauen, auf den Server über Git-Repo via Upload oder Push ziehen und dann kannst Du den Stack starten.
Diese Docker Compose startet ein MariaDB (Datenbank MySQL) mit der Nutzeroberfläche PhpMyAdmin. Wenn Du den Deine Computer hochfährst, dann fährt auch die Datenbank hoch
version: '3.8'
services:
mariadb:
image: mariadb:lastest
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_USER: superdupperuser
MYSQL_PASSWORD: changemenow
ports:
- "3306:3306"
volumes:
- mariadb:/var/lib/mysql
networks:
db:
phpmyadmin:
image: phpmyadmin
restart: always
expose:
- "80"
ports:
- "80:80"
environment:
- PMA_HOST=mariadb
- PMA_PORT=3306
networks:
db:
volumes:
mariadb:
driver: local
networks:
db:
driver: bridge