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