Portainer Tutorial – Alles zu Stacks, Networks, Images Docker

Was ist Portainer

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?

Umgebungen
Umgebungen

Die Software Portainer hilft Dir bei der Verwaltung von Deinen Docker (Swarm), Azure ACI, Nomad und Kubernetes. All diese Software bieten ein Command Line Interface an, worauf Portainer einem User Interface auf Browser Basis setzt.

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.

Dashboard für die Übersicht - Portainer Tutorial Steffen Lippke Coding Lab
Dashboard für die Übersicht – Portainer Tutorial Steffen Lippke Coding Lab

In diesen Ausführungsumgebungen laufen die Anwendungsprogramme, welche nur die notwendigen Software-Abhängikeiten erhalten. Die Containerisierung erlaubt ein ultra 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 auch Container-Orchestration.

Der Swarm Manager überwacht die Instanzen und startet neue, wenn einzelne abrauschen.

Die Overlay-Netzwerke spannen über alle 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 (CLI) 10 / 10 Punkte für gute Benutzbarkeit erhält, solltest Du eine grafische Oberfläche in Erwägung ziehen.

Wenn Du mehr als einen Container auf Deiner Maschine gleichzeitig laufen lässt, können die CLI Kommands 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
  • Metadata 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 Nodes 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

Protainer 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.

Login Screen
Login Screen

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.

Stacks
Stacks

Bevor Docker-Container über mehrere 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 ein Muss – Dashbaord

Das Dashboard zeigt die wichtigsten Kennzahlen zu Deinem Host-Rechner an. Wie viele Images, Volumes sind gespeichert? Wie leistungsstark ist die Maschine (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 herumzufrickeln, lauf die Templates in der Regel Out-of-the-Box. 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.

Volumes
Volumes

Apps fertig serviert – Images

Docker Images sind binär Blobs, welche die Applikationslogik enthält. Diese 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.

Lasse die babbeln – Networks

Docker bietet ein internes Docker-Netzwerk an. Statt physische Computer mit Netzwerk-Kabeln zu verbinden, verwaltest Du ein internes Netzwerk virtuell. So kannst Du Container abkapseln, Subnetze bilden und die Kommunikation zwischen den Containern ermöglichen.

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 die Node über 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

Jeden Monat teile ich mit Mitgliedern
4 neue praxisnahe Tutorials (je 1000+ Wörter).


Trage Deine Mail, damit Du
Deine Coding + Hacking Skills erweitern kannst!

Die Webseite nutzt nur technisch notwendige Cookies.