Inhalt
Docker hat sich als eine Standard-Virtualisierungsplattform in der Open Source Welt etabliert. Ganze Server-Farmen laufen in Docker-Containern. Aber man braucht kein komplettes Rechenzentrum um virtuelle Server einzurichten - ein entsprechend potentes NAS unter Openmediavault tut’s für den Anfang auch.
NAS-Server vorbereiten
Grundlage ist ein NAS-Server mit einer laufenden Openmediavault-Installation. Das ist bei mir das momentan aktuelle omv 4.1 auf einem Server mit Intel-Prozessor (siehe NAS-Artikel).
Docker wird in Form eines OMV-Plugins installiert, das gleichzeitig eine grafische Oberfläche für die Bedienung mitbringt. Das Plugin gehört nicht zum Standard-System, sondert steckt in den OMV-Extras. Das ist eine Sammlung von Software-Repositories mit OMV-Erweiterungen, die von der Community betreut werden. Neben Docker bringt sie übrigens auch eine Reihe anderer interessanter Zusätze mit.
OMV-Extras installieren
Das OMV-Extras-Paket lädt man sich zunächst auf den lokalen Rechner herunter. Jede OMV-Hauptversion hat ihr eigenes Paket. Für Version 4.x liegt es unter
omv-extras.org/openmediavault-omvextrasorg_latest_all4.deb
Dieses Paket kann dann über die Web-Oberfläche des OMV installiert werden. Dafür wählt man im linken Menü Erweiterungen aus, klickt auf den Hochladen Knopf und wählt mit dem Browse Knopf die eben heruntergeladene Paket-Datei aus.
Nach der Installation erscheint im linken Menü der zusätzliche Punkt OMV-Extras. Um Docker zu installieren, muss dort das Respository Docker CE aktiviert werden. Danach erscheint in der Liste der Erweiterungen unter Virtualization das Paket openmediavault-docker-gui, das durch anhaken der links daneben liegenden Auswahlbox und Klick auf den Installieren Knopf eingerichtet wird.
War die Installation erfolgreich, listet das linke Menü jetzt unter Dienste auch Docker auf.
Die Docker-GUI
Die Docker-GUI besteht aus vier Seiten, die über Tabs ausgewählt werden können. Zuerst erscheint die Übersichtsseite, die in zwei Tabellen die aktuell geladenen Images (entspricht der Ausgabe von docker images) und Container (analog docker ps -a) auflistet. Sie sollte zu Beginn noch leer sein. In der Abbildung unten ist allerdings schon ein Image geladen und in einem Container gestartet - dazu später mehr.
Im Moment interessanter ist der Tab Einstellungen, über den das Plugin mit dem oberen Schalter aktiviert wird. Die restlichen Einstellungen können zunächst auf den Standardwerten belassen werden.
Der zweite Tab Docker Images Repo hält eine Auswahl an bewährten Images zur Installation bereit. Hier findet man zum Beispiel Images für den Mediaserver Kodi, den Downloader Couchpotatoe oder das private Cloud-System NextCloud.
Image laden und starten
Über den Knopf Image bereitstellen in der Spalte Aktion kann man das Herunterladen der Image-Datei direkt aus der Liste heraus anstoßen. Nach dem vollständigen Download wird der rechts daneben befindliche Startknopf aktiviert, über den man das Image konfigurieren und in einem Containr starten kann. Alternativ geht das auch in der Übersichtsseite, indem man das Image auswählt und auf den Knopf Starten klickt.
Im oberen Teil des Startdialogs vergibt man unter anderem den Namen des Containers und wählt die Netzwerk-Betriebsart aus. Im Netzwerkmodus Host benutzt der Container die selbe Adresse wie der Rechner, auf dem Docker läuft. Beim Bridging bekommt der Container eine eigene Adresse und es können die vom Host weiterzuleitetenden Ports definiert werden.
Im unteren Teil kann man unter anderem Umgebungsvariablen des Containers definieren und Verzeichnisse des Containers auf Host-Verzeichnisse umlenken, um Daten außerhalb des Containers und damit dauerhaft zu speichern (Daten innerhalb des Containers gehen bei einem Neustart des Images verloren).
Wie diese Einstellungen konfiguriert werden müssen, ist vom jeweiligen Image und dessen Betriebsweise abhängig. Hinweise gibt meist die Image-Beschreibung, die man aus der Repository-Liste oder der Übersichtsseite heraus mit dem Info Knopf aufrufen kann.
Nützlicher Docker-Befehle
Hier noch ein paar nützliche Befehle für den Umgang mit den Docker-Containern auf der Kommandozeile:
-
- docker images oder docker image ls
Lokal vorhandene Images auflisten (entspricht der Tabelle Docker Images auf der omv Docker Übersichtsseite) - docker ps und docker ps -a
Nur laufende oder alle vorhandenen (-a) Container auflisten (entspricht der Tabelle Docker Containers auf der omv Docker Übersichtsseite) - docker pull <image>
Image image herunterladen - docker inspect <image>
Image-Konfiguration auflisten (entspricht dem Details Fenster für Images in der omv Docker Images Tabelle) - docker inspect <container>
Container-Konfiguration auflisten (entspricht dem Details Fenster für Container in der omv Docker Containers Tabelle) - docker run -d [options] <image-name>
Image im Background (-d oder --detach) starten. Options:- --name <container-name>
Container benennen, ansonsten wird ein zufälliger Name generiert (entspricht Container Name im Starten Fenster eine Images der omv Docker Images Tabelle) - -v <volume>:<target-dir> oder
-v <file>:<target-file>
Docker-Volume oder -Datei auf Host-Verzeichnis target-dir (wird von docker angelegt) oder Host-Datei target-file (muss schon vorhanden sein) zuweisen (entspricht den Einträgen unter Volumes and Bind mounts im Starten Fenster eine Images der omv Docker Images Tabelle) - -p <host-port>:<container-port>
Port host-port des Hosts auf Port container-port des Containers weiterleiten (entspricht den Einträgen unter Portweiterleitung im Starten Fenster eine Images der omv Docker Images Tabelle) - -e <variable>=<value>
Inhalt der Umgebungsvariablen variable auf Wert value setzen (entspricht den Einträgen unter Umgebungsvariablen im Starten Fenster eine Images der omv Docker Images Tabelle)
- --name <container-name>
- docker volume ls
Docker-Volumes auflisten- … --filter dangling=true
Nur verworfene Volumes listen
- … --filter dangling=true
- docker volume prune
Verworfene Volumes löschen - docker rm -f <container>
Container löschen - docker exec -it <container> <command>
Kommando command im Docker Container container ausführen, z.B. /bin/bash oder /bin/sh für eine Shell - docker image save [-o <archive-path>] [image-name]
Docker-Image für Inspektionszwecke in tar-Archiv verwandeln - docker commit <container>
Container in ein Image verwandeln (Vorsicht !!!)
Fazit
Über das Docker-GUI-Plugin lassen sich Docker Images bequem laden, konfigurieren und starten, ohne die Kommandozeile bemühen zu müssen. Für ein Verständnis der Hintergründe und spezielle Abeiten sind Kenttnisse über Docker-Kommandos aber sehr nützlich.
Quellen und Verweise:
- nachgehakt: Docker-Praxis mit Linux, c’t 15⁄2017 S.106 ff
- Umbauanleitung, Docker-Container für Heim- und Webserver, c’t 15⁄2017 S. 110 ff (kostenpflichtig)
- docker images oder docker image ls
2 Kommentare