Dockhand
Einleitung
Dockhand ist eine Webanwendung, mit der sich Docker-Container komfortabel monitoren und verwalten lassen. Es stellt insofern eine Alternative zu ähnlichen Lösungen, wie z.B. Portainer, dar. Ich vergleiche hier nicht die verschiedenen Lösungen und will auch gar nicht die Vorteile von Dockhand gegenüber von z.B. Portainer herausstellen. Mich hat Dockhand aber wegen seiner Funktionsvielfalt und der intuitiven Oberfläche überzeugt, um nicht zu sagen begeistert.
Lizenz
Die Software ist unter der Apache 2.0 Open Source License lizenziert und kann für private Zwecke unbegrenzt genutzt werden. Für kommerzielle Zwecke darf sie unter Einschränkungen auch kostenfrei genutzt werden. Ansonsten gibt es verschiedene Lizenzierungsmodelle.
Features (Auszug)
Ich möchte keine Bedienungsanleitung für Dockhand bereitstellen. Für eine vollständige Anleitung kann ich die Homepage des Herstellers empfehlen: Manual. Auch eine vollständige Feature List stelle ich hier nicht online. Aber ein paar Highlights möchte ich kurz festhalten.
Dahsboard
Da ist zunächst einmal das übersichtliche und informative Dashboard.
- Kompakt
- Standard
- Detailliert
- Vollständig
Containers
In der Ansicht Containers sieht man die Container eines Hosts (wer hätte das gedacht?). Das interessanteste Feature in dieser Ansicht ist das Updaten der Container. Man klickt auf den Button "Check for updates" und es werden alle laufenden Container des ausgewählten Hosts auf verfügbare Update geprüft. Wenn es welche gibt, dann kann man sie über diese Oberfläche auch direkt aktualisieren. Das geht natürlich nur, wenn die Container nicht mit einer bestimmten Version definiert wurden.
Noch interessanter wird es, wenn man in dieser Ansicht auf einen der angezeigten Container klickt. In der Ansicht Container Details kann man sich die Logs ansehen, die Layers, die laufenden Prozesse, Details des genutzten Dockernetzwerks oder auch gemountete Volumes. Man kann das (virtuelle) Filesystems des Containers durchbrowsen. Hier kann man sogar Dateien oder Verzeichnisse bearbeiten, umbenennen, löschen, ihre Berechtigungen ändern und auch ansonsten jede Menge Unheil anrichten. Darüber hinaus kann man sich die Umgebungsvariablen, die Lables, Sicherheitsparameter, Ressourcenlimitierungen und den Gesundheitsstatus des ausgewählten Containers ansehen.
Shell
Manchmal muss man zu Analysezwecken in einem Container auf eine Kommandoshell zugreifen. Das geht auf der Konsole mit dem Befehl "docker exec...". Komfortabler geht das mit Dockhand. HIer gibt es das Menü "Shell". Hier kann ich einen Container auswählen und wenn er eine Shell unterstützt, dann kann ich auswählen, welche Shell ich verwenden möchte und mit welchen User ich zugreifen möchte. Das ist schon recht nice.
Stacks
Genau wie unter Portainer kann man Docker-Stacks mittels Compose-Files auch unter Dockhand definieren. Dazu wird ein Editor mit Syntax Highlighting angeboten.
Ich kann hier compose-files schreiben, für Container, die auf anderen Hosts laufen. Das Compose-File liegt dann in dem Volume, das als /app/data gemountet wird auf dem Dockhand-Host. Persistente Volumes, die für den anderen Host definiert werden sollen, müssen mit ihrem kompletten Pfad angegeben werden. Wenn der Pfad in dem Compose-File mit einem Punkt beginnt, dann werden die Verzeichnisse für diese Volumes auf dem anderen Host im Verzeichnis /app angelegt.
Installation via docker compose
Dockhand selbst wird ebenfalls per Docker deployed. Ich lege dazu auf dem Server, der als Host für Dockhand vorgesehen ist, ein Verzeichnis namens dockhand und darin eine Datei namens docker-compose.yml an. Das Compose-File bekommt folgenden Inhalt:
services:
dockhand:
image: fnsys/dockhand:latest
container_name: dockhand
restart: unless-stopped
ports:
- 3003:3000
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /home/andreas/dockhand_data:/app/data
volumes:
dockhand_data:
docker compose up -d
Umgebungen hinzufügen
Auf dem Dashboard rechts oben gibt es ein "+"-Symbol. Damit kann eine neue Umgebung (also ein von Dockhand zu verwaltender Docker Host) hinzugefügt werden. Hier kann man die Verbindungsart auswählen zwischen:- Unix socket
- Direct Connection
- Hawser standard
- Hawser edge
Um den Hawser Agenten zu nutzen, muss er natürlich auf den einzubindenden Hosts laufen. Das geht am Einfachsten per docker-compose.yml. Ich erstelle also auf dem betreffenden Host ein Unterverzeichnis hawser und darin eine docker-compose.yml mit folgendem Inhalt:
services:
hawser:
image: ghcr.io/finsys/hawser:latest
container_name: hawser
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- hawser_stacks:/data/stacks
ports:
- "2376:2376"
volumes:
hawser_stacks:
docker compose up -d
Nachdem ich für's erste alle Umgebungen hinzugefügt habe, kann ich mir das Dashboard einfach per Drag&Drop zurecht drappieren.