Portainer: Was kann die GUI für Docker?

Nicht immer bedarf es komplexer Lösungen um die alltägliche Arbeit zu vereinfachen. Portainer ist ein solcher Fall. Die Verwaltung einzelner Docker Engines oder eines Swarm Clusters erfolgt beim Einsatz der Community Edition in der Regel über das Docker CLI. Portainer bietet eine freie, intuitive und leicht zu implementierende GUI für Docker, die das Management von Containern, Volumes, usw. ermöglicht.

Zugriffsmöglichkeiten auf Docker Engines

Portainer ist selbst ein einzelner Container, der als Linux oder nativer Windows Container deployed werden kann. Um dieDocker Engine verwalten zu können benötigt Portainer Zugriff auf die zu managenden Engines. Dieser Zugriff ist über die folgenden Wege möglich:

  • Lokal: Durch das Einbinden des Docker-Sockets in den Portainer Container als Volume „-v /var/run/docker.sock:/var/run/docker.sock" hat Portainer die Möglichkeit, die Docker-Umgebungauf der er selbst läuft, zu verändern.
  • Remote: Über die Angabe der IP-Adresse und des Ports, unter der die API einer entfernten Docker-Infrastruktur erreichbar ist, kann diese mit Portainer verwaltet werden. Hierfür muss jedoch die Docker-API der Remote Umgebung per TCP erreichbar sein.
  • Agent: Der Portainer Agent ermöglicht die komfortable Verwaltung eines Docker Swarm Clusters mit Portainer. Der Agent wird als Service im Cluster bereitgestellt. Mit ihm lassen sich die Limitierungen der Docker API umgehen. Das bedeutet, er stellt über einen Aufruf Informationen von allen Hosts im Cluster bereit. Zur Anbindung des Agents innerhalb von Portainer ist nur die Angabe der IP und des Ports, unter denen der Agent erreichbar ist, notwendig.
  • Microsoft Azure: Seit der Version 1.18.0 bietet Portainer zusätzlich die Möglichkeit sich mit ACIs (Azure Container Instances) zu verbinden und diese zu managen. Dies erfordert die Angabe eines Umgebungsnamens, sowie der Azure Credentials (Application ID, Tenant ID und Authentication Key).

Das Dashboard

Nach der Anmeldung an Portainer wird das Dashboard (siehe Abbildung 1) angezeigt, das bereits einen guten Überblick über den Docker-Host liefert. Auf einen Blick sind Hardwareinformationen wie die Anzahl der Prozessoren und die Größe des Arbeitsspeichers, sowie Docker spezifische Informationen (Anzahl der Container, Images, Volumes und Networks) ersichtlich.
Abbildung 1

Verwalten von Containern und Images

Die Container-Ansicht bietet verschiedene Möglichkeiten die Container in einer Umgebung zu verwalten. Wie in Abbildung 2 ersichtlich, werden im ersten Schritt Basisinformationen zu den vorhandenen Containern angezeigt. Welche Container angezeigt werden, lässt sich über Filter einschränken.Mit einem Klick auf einen der Container können detaillierte Informationen zu dem jeweiligen Container abgerufen werden. Zudem können z. B. eine Konsolen-Session zu dem Container geöffnet oder ein Image von dem Container erstellet werden. Diese Funktionen sind zum Teil auch über „quick actions" direkt aus der Container-Übersicht erreichbar.

Die Basisansicht ermöglicht des Weiteren den Status der einzelnen Container zu verändern, also die Container u. a. zu stoppen, starten oder löschen, sowie neue Container zu erstellen. Der Dialog zum Erstellen eines Containers ist letztlich eine Abbildung der Optionen des docker run Kommandos. Diese sind thematisch sortiert in einzelnen Reitern gruppiert und werden stellenweise durch Tooltips erläutert. Dabei kann ausgewählt werden von welcher der konfigurierten Registry das Image bezogen werden soll.

Abbildung 2

Portainer stellt alle grundlegenden Funktionen zur Verwaltung von Images bereit. Es können Images aus einer Registry heruntergeladen, gelöscht und erstellt werden. Das für das Erstellen eines Images benötigte Dockerfile kann über drei Wege zur Verfügung gestellt werden.

  • Mit einen Webeditor kann das File direkt im Browser geschrieben werden.
  • Über ein Upload-Formular kann entweder direkt ein Dockerfile oder ein tar-Archiv, das den Build-Kontext inkl. Dockerfile beinhaltet, hochgeladen werden.
  • Dem ähnlich kann die URL zu einem Dockerfile, einem tar-Archiv oder einem öffentlichen Git-Repository angegeben werden. Im Falle des tar-Archivs bzw. des Repositories müssen diese den gesamten Build-Kontext enthalten.
Abbildung 3

Stacks und Templates

Neben einzelnen Containern bietet Portainer auch die Möglichkeit ganze Stacks von Containern zu definieren. Dabei wird für die Definition des Stacks das Docker-Compose-Format (aktuell wird Version 2 unterstützt) genutzt. Die Docker-Compose-Datei kann, analog wie für das Dockerfile beschrieben, zur Verfügung gestellt werden. Wurde ein Stack außerhalb von Portainer erstellt, wird dieser zwar angezeigt und man erhält einen guten Überblick über die zusammenhängenden Container aber die Verwaltung eines Stacks ist nur möglich, wenn dieser auch in Portainer erstellt wurde.

Application Templates sind ein Feature von Portainer, das so direkt in Docker nicht verfügbar ist.Dabei handelt es sich um vordefinierte Container, für die einige Optionen, wie z. B. das zu verwendende Image, Port-Mappings und Volumes, bereits vordefiniert sind. Standardmäßig können nur die von Portainer bereitgestellten App Templates genutzt werden. Es ist aber möglich eigene Templates in Form einer JSON-Datei zu erstellen und diese unter Einstellungen, mit dem Verwies auf die URL zur Template-Datei, der Portainer Instanz bekannt zu machen. Diese eigenen Templates können dann wie die vordefinierten Templates eingesetzt werden.

Abbildung 4

User Management

Neben den technischen Funktionen für Docker besitzt Portainer auch eine umfangreiche Benutzerverwaltung. Diese biete die Möglichkeit Benutzer und Teams anzulegen. Dabei kann einem Benutzer zusätzlich die Admin Rolle und die Teamleiter Rolle zugewiesen werden. Ein Administrator hat den vollen Zugriff auf die Portainer Umgebung und alle Docker Engines. Ein Teamleiter kann die Benutzer seines Teams verwalten (neue Benutzer hinzufügen und bestehende Benutzer entfernen). Ein Team wird einem oder mehreren Docker-Instanzen zugewiesen, um den Mitgliedern des Teams dessen Verwaltung zu ermöglichen. Dabei lassen sich die Funktionen allerdings nicht einschränken, sodass jeder Benutzer des Teams den vollen Funktionsumfang der jeweiligen Instanz nutzen kann. Ein umfassendes Rechtemanagement, das die dedizierte Zuweisung von einzelnen Rechten (z. B. Erstellen von Containern) an Benutzer oder Teams ermöglicht, fehlt allerdings noch.​

Fazit

Portainer kann durch eine gut durchdachte Implementierung der Standard-Docker-Funktionen, wie die Verwaltung von Containern, Images und Stacks überzeugen. Zudem bietet es mit den Application Templates und dem User Management weitere Möglichkeiten, die mit Docker alleine nicht zur Verfügung stehen und einen großen Mehrwert bieten. Insbesondere das User Management birgt großes Potenzial, wenn es in Zukunft um ein umfassendes Rechtemanagement erweitert werden würde. Gerade die Übersichtlichkeit der Weboberfläche erleichtert die Arbeit mit einer Docker Engine ungemein und durch die einfache Bereitstellung und Konfiguration von Portainer ist es auch für kleinere Docker-Projekte hervorragend geeignet.
0
JSON als elegante Formatierung von Abfrage-Ergebni...
Wir vergrößern unser Team – Big Data Administrator...

Related Posts

Unsere Autoren

Technologie Blogs

Tutorials

4 members

Webentwicklung

3 members

Java

3 members

Archiv | Blog-Beiträge

Login