Docker für das OpenMediaVault-NAS

Inhalt

Docker hat sich als eine Stan­dard-Vir­tua­li­sie­rungs­platt­form in der Open Source Welt eta­bliert. Gan­ze Ser­ver-Far­men lau­fen in Docker-Con­tai­nern. Aber man braucht kein kom­plet­tes Rechen­zen­trum um vir­tu­el­le Ser­ver ein­zu­rich­ten - ein ent­spre­chend poten­tes NAS unter Open­me­diav­ault tut’s für den Anfang auch.

NAS-Ser­ver vorbereiten

Grund­la­ge ist ein NAS-Ser­ver mit einer lau­fen­den Open­me­diav­ault-Instal­la­ti­on. Das ist bei mir das momen­tan aktu­el­le omv 4.1 auf einem Ser­ver mit Intel-Pro­zes­sor (sie­he NAS-Arti­kel).

Docker wird in Form eines OMV-Plug­ins instal­liert, das gleich­zei­tig eine gra­fi­sche Ober­flä­che für die Bedie­nung mit­bringt. Das Plug­in gehört nicht zum Stan­dard-Sys­tem, son­dert steckt in den OMV-Extras. Das ist eine Samm­lung von Soft­ware-Repo­si­to­ries mit OMV-Erwei­te­run­gen, die von der Com­mu­ni­ty betreut wer­den. Neben Docker bringt sie übri­gens auch eine Rei­he ande­rer inter­es­san­ter Zusät­ze mit.

OMV-Extras instal­lie­ren

Das OMV-Extras-Paket lädt man sich zunächst auf den loka­len Rech­ner her­un­ter. Jede OMV-Haupt­ver­si­on hat ihr eige­nes Paket. Für Ver­si­on 4.x liegt es unter

 omv-extras.org/openmediavault-omvextrasorg_latest_all4.deb

Die­ses Paket kann dann über die Web-Ober­flä­che des OMV instal­liert wer­den. Dafür wählt man im lin­ken Menü Erwei­te­run­gen aus, klickt auf den Hoch­la­den Knopf und wählt mit dem Brow­se Knopf die eben her­un­ter­ge­la­de­ne Paket-Datei aus.

Nach der Instal­la­ti­on erscheint im lin­ken Menü der zusätz­liche Punkt OMV-Extras. Um Docker zu instal­lie­ren, muss dort das Respo­si­to­ry Docker CE akti­viert wer­den. Danach erscheint in der Lis­te der Erwei­te­run­gen unter Vir­tua­liza­ti­on das Paket open­me­diav­ault-docker-gui, das durch anha­ken der links dane­ben lie­gen­den Aus­wahl­box und Klick auf den Instal­lie­ren Knopf ein­ge­rich­tet wird.

War die Instal­la­ti­on erfolg­reich, lis­tet das lin­ke Menü jetzt unter Diens­te auch Docker auf.

Die Docker-GUI

Die Docker-GUI besteht aus vier Sei­ten, die über Tabs aus­ge­wählt wer­den kön­nen. Zuerst erscheint die Über­sichts­sei­te, die in zwei Tabel­len die aktu­ell gela­de­nen Images (ent­spricht der Aus­ga­be von docker images) und Con­tai­ner (ana­log docker ps -a) auf­lis­tet. Sie soll­te zu Beginn noch leer sein. In der Abbil­dung unten ist aller­dings schon ein Image gela­den und in einem Con­tai­ner gestar­tet - dazu spä­ter mehr.

Im Moment inter­es­san­ter ist der Tab Ein­stel­lun­gen, über den das Plug­in mit dem obe­ren Schal­ter akti­viert wird. Die rest­li­chen Ein­stel­lun­gen kön­nen zunächst auf den Stan­dard­wer­ten belas­sen werden.

Der zwei­te Tab Docker Images Repo hält eine Aus­wahl an bewähr­ten Images zur Instal­la­ti­on bereit. Hier fin­det man zum Bei­spiel Images für den Media­ser­ver Kodi, den Down­loa­der Couch­po­ta­toe oder das pri­va­te Cloud-Sys­tem NextCloud.

Image laden und starten

Über den Knopf Image bereit­stel­len in der Spal­te Akti­on kann man das Her­un­ter­la­den der Image-Datei direkt aus der Lis­te her­aus ansto­ßen. Nach dem voll­stän­di­gen Down­load wird der rechts dane­ben befind­li­che Start­knopf akti­viert, über den man das Image kon­fi­gu­rie­ren und in einem Con­tainr star­ten kann. Alter­na­tiv geht das auch in der Über­sichts­sei­te, indem man das Image aus­wählt und auf den Knopf Star­ten klickt.

Im obe­ren Teil des Start­dia­logs ver­gibt man unter ande­rem den Namen des Con­tai­ners und wählt die Netz­werk-Betriebs­art aus. Im Netz­werk­mo­dus Host benutzt der Con­tai­ner die sel­be Adres­se wie der Rech­ner, auf dem Docker läuft. Beim Bridging bekommt der Con­tai­ner eine eige­ne Adres­se und es kön­nen die vom Host wei­ter­zu­lei­te­ten­den Ports defi­niert werden.

Im unte­ren Teil kann man unter ande­rem Umge­bungs­va­ria­blen des Con­tai­ners defi­nie­ren und Ver­zeich­nis­se des Con­tai­ners auf Host-Ver­zeich­nis­se umlen­ken, um Daten außer­halb des Con­tai­ners und damit dau­er­haft zu spei­chern (Daten inner­halb des Con­tai­ners gehen bei einem  Neu­start des Images verloren).

Wie die­se Ein­stel­lun­gen kon­fi­gu­riert wer­den müs­sen, ist vom jewei­li­gen Image und des­sen Betriebs­wei­se abhän­gig. Hin­wei­se gibt meist die Image-Beschrei­bung, die man aus der Repo­si­to­ry-Lis­te oder der Über­sichts­sei­te her­aus mit dem Info Knopf auf­ru­fen kann.

Nütz­li­cher Docker-Befehle

Hier noch ein paar nütz­li­che Befeh­le für den Umgang mit den Docker-Con­tai­nern auf der Kommandozeile:

    • docker images oder docker image ls
      Lokal vor­han­de­ne Images auf­lis­ten (ent­spricht der Tabel­le Docker Images auf der omv Docker Übersichtsseite)
    • docker ps und docker ps -a
      Nur lau­fen­de oder alle vor­han­de­nen (-a) Con­tai­ner auf­lis­ten (ent­spricht der Tabel­le Docker Con­tai­ners auf der omv Docker Übersichtsseite)
    • docker pull <image>
      Image image herunterladen
    • docker inspect <image>
      Image-Kon­fi­gu­ra­ti­on auf­lis­ten (ent­spricht dem Details Fens­ter für Images in der omv Docker Images Tabelle)
    • docker inspect <con­tai­ner>
      Con­tai­ner-Kon­fi­gu­ra­ti­on auf­lis­ten (ent­spricht dem Details Fens­ter für Con­tai­ner in der omv Docker Con­tai­ners Tabelle)
    • docker run -d [opti­ons] <image-name>
      Image im Back­ground (-d oder --detach) star­ten. Options:
      • --name <con­tai­ner-name>
        Con­tai­ner benen­nen, ansons­ten wird ein zufäl­li­ger Name gene­riert (ent­spricht Con­tai­ner Name im Star­ten Fens­ter eine Images der omv Docker Images Tabelle)
      • -v <volu­me>:<tar­get-dir> oder
        -v <file>:<target-file>
        Docker-Volu­me oder -Datei auf Host-Ver­zeich­nis tar­get-dir (wird von docker ange­legt) oder Host-Datei tar­get-file (muss schon vor­han­den sein) zuwei­sen (ent­spricht den Ein­trä­gen unter Volu­mes and Bind mounts im Star­ten Fens­ter eine Images der omv Docker Images Tabelle)
      • -p <host-port>:<container-port>
        Port host-port des Hosts auf Port con­tai­ner-port des Con­tai­ners wei­ter­lei­ten (ent­spricht den Ein­trä­gen unter Port­wei­ter­lei­tung im Star­ten Fens­ter eine Images der omv Docker Images Tabelle)
      • -e <variable>=<value>
        Inhalt der Umge­bungs­va­ria­blen varia­ble auf Wert value set­zen (ent­spricht den Ein­trä­gen unter Umge­bungs­va­ria­blen im Star­ten Fens­ter eine Images der omv Docker Images Tabelle)
    • docker volu­me ls
      Docker-Volu­mes auflisten
      • … --fil­ter dangling=true
        Nur ver­wor­fe­ne Volu­mes listen
    • docker volu­me prune
      Ver­wor­fe­ne Volu­mes löschen
    • docker rm -f <con­tai­ner>
      Con­tai­ner löschen
    • docker exec -it <con­tai­ner> <com­mand>
      Kom­man­do com­mand im Docker Con­tai­ner con­tai­ner aus­füh­ren, z.B. /bin/bash oder /bin/sh für eine Shell
    • docker image save [-o <archi­ve-path>] [image-name]
      Docker-Image für Inspek­ti­ons­zwe­cke in tar-Archiv verwandeln
    • docker com­mit <con­tai­ner>
      Con­tai­ner in ein Image ver­wan­deln (Vor­sicht !!!)

    Fazit

    Über das Docker-GUI-Plug­in las­sen sich Docker Images bequem laden, kon­fi­gu­rie­ren und star­ten, ohne die Kom­man­do­zei­le bemü­hen zu müs­sen. Für ein Ver­ständ­nis der Hin­ter­grün­de und spe­zi­el­le Abei­ten sind Kentt­nis­se über Docker-Kom­man­dos aber sehr nützlich.


    Quel­len und Verweise:

    1. nach­ge­hakt: Docker-Pra­xis mit Linux, c’t 152017 S.106 ff
    2. Umbau­an­lei­tung, Docker-Con­tai­ner für Heim- und Web­ser­ver, c’t 152017 S. 110 ff (kos­ten­pflich­tig)

2 Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

neunzehn − eins =