
Das heimische NAS dient vor allem dazu, Dateien im LAN zu speichern und zu verteilen. Hinzu kommen Funktionen wie Media- oder Webserver, E-Mail und viele weitere Funktionen. Solche Funktionen könnt Ihr aber auf jedem Rechner im LAN aufsetzen und diesen somit quasi zum NAS machen. Und mit Docker-Containern mĂŒsst Ihr dafĂŒr noch nicht mal umstĂ€ndlich Software einrichten. Mit dem Profi-Liebling heutiger Zeit schaffen das auch Einsteiger.
Nun, Container-Einsteiger, nicht unbedingt Computer-Einsteiger đ
In dieser Anleitung zeigen wir Euch, wie Ihr auf einem Linux-Rechner (Debian, Mint, Ubuntu, etc.) Web-Dienste einrichtet und diese ĂŒber das Netzwerk erreicht - ganz wie bei einem richtigen NAS. Beispielsweise CMS wie Wordpress und Pico, einen Apache-Webserver, die Dropbox-Alternative ownCloud oder den Musik-Player Client175 fĂŒr mpd.
Docker? Container?
Wer weiĂ, was Container sind, kann dieses Kapitel ĂŒberspringen.
Eine kurze EinfĂŒhrung zu Docker unter Windows haben wir hier. Leider verhĂ€lt sich Docker unter Windows bei einigen wichtigen Punkten nicht so wie unter Linux (also wie es soll), grundsĂ€tzlich könntet Ihr aber auch Euren Windows-Rechner verwenden. Hier kommt eine Virtuelle Maschine mit Debian zum Einsatz - fĂŒr Ubuntu ist es dasselbe Prozedere.

Das Konzept hinter Containern, hier konkret fĂŒr das Programm Docker, ist nicht ganz trivial. Im Grunde handelt es sich um komplette oder abgespeckte Linuxe, die Ihr wie eine Virtuelle Maschine nutzen könnt. Interessanter sind aber die abgespeckten Systeme, die nur auf ein einziges Tool abzielen. Ein Wordpress-Container hat zum Beispiel nur einen einzigen Zweck: Euch ein fertig konfiguriertes, sofort startbereites Wordpress zu liefern. Ihr mĂŒsst also weder Wordpress einrichten, noch PHP, einen Webserver oder sonst etwas. Alles was Ihr braucht ist der Container.
NatĂŒrlich könntet Ihr alle Tools ganz "normal" unter Linux einrichten und verfĂŒgbar machen - aber das ist mit viel Aufwand, Frickelei und Wartungsarbeiten verbunden. Aber Container könnt Ihr jederzeit stoppen, löschen, pausieren und zurĂŒcksetzen, ohne Euch etwa um Wordpress selbst kĂŒmmern zu mĂŒssen. Zudem verbrauchen Container deutlich weniger Ressourcen als Virtuelle Maschinen, da eben kein kompletter Computer "simuliert" werden muss.
Die Ansprache eines Services von einem NAS sieht normalerweise so aus: Ihr ruft im Browser die Adresse des NAS auf, gefolgt von einem Port, zum Beispiel 192.168.178.100:8080. Ăber 192.168.178.100 adressiert Ihr das NAS selbst, ĂŒber den Port (eine Art TĂŒr) 8080 wird die VerwaltungsoberflĂ€che aufgerufen. Ein Webserver wĂ€re dann vielleicht ĂŒber 192.168.178.100:80 erreichbar und ein Musik-Client ĂŒber 192.168.178.100:6600. Kurz: Die einzelnen Dienste auf einem Rechner sprecht Ihr ĂŒber solche Ports an. Im Internet mĂŒsst Ihr meistens keine Ports angeben, da es bei normalen Webseiten immer um Port 80 geht, der automatisch angenommen wird, wenn Ihr keinen Port eingebt. Ihr könntet aber auch google.de:80 aufrufen.
Das heiĂt fĂŒr uns hier: Die Container laufen alle auf einem beliebigen Linux-Rechner, im Zweifelsfall einfach auf Eurem Standard-Computer im Hintergrund. Und wenn das ein Windows-Rechner ist, versucht Euer GlĂŒck mit Docker fĂŒr Windows oder nutzt eine Virtuelle Maschine. AnschlieĂend können sie lokal ĂŒber localhost:8080 oder im LAN ĂŒber 192.168.178.100:8080 angesprochen werden.

Ein letzter Hinweis: NatĂŒrlich gibt es elegantere Möglichkeiten, natĂŒrlich Professionellere, natĂŒrlich fertige Lösungen und und und. Aber mit separaten Containern fĂŒr jede Anwendung habt Ihr ein schön modulares Baukastensystem, das sich mit den immer gleich drei, vier Standardbefehlen verwalten lĂ€sst. Das heiĂt nicht, dass Docker ein simples 1-Klick-System fĂŒr Computer-Laien ist - aber in der hier gezeigten grundlegenden Nutzung können eben auch Laien Dinge aufsetzen, die sonst nur den Tekkies vorbehalten sind.
1. Docker installieren
Die Installation von Docker unter Linux benötigt ein paar Zeilen - die exakten Anweisungen fĂŒr unterschiedliche Linuxe findet Ihr hier bei Docker. Genau genommen Docker CE (Community Edition). FĂŒr Ubuntu/Debian sind es folgende, nacheinander ausgefĂŒhrte Befehle:
Update:
sudo apt-get update
Apt via HTTPS ermöglichen:
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
Dockers GPG-SchlĂŒssel hinzufĂŒgen:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Docker-Repository hinzufĂŒgen:
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
Installation:
sudo apt-get update
sudo apt-get install docker-ce
Alternativ könnt Ihr das passende DEB-Paket herunterladen und installieren: Sucht Euch hier die passende Ubuntu-Version heraus, navigiert zu pool/stable und ladet das DEB-Paket herunter. Installiert es per Doppelklick oder:
sudo dpkg -i /pfad/zum/paket.deb
Damit ist die Installatin abgeschlossen.
2. Docker-Hub durchsuchen
Der Einfachheit halber beschrÀnken wir uns auf die Beispiele httpd (simpler Apache-Webserver; "http daemon") und mpd mit Client175 (Netzwerk-Musik-Player) - alles andere ist eh nur Wiederholung.
ZunĂ€chst mĂŒsst Ihr die passenden Images (aus denen dann laufende Container werden) haben, was erfreulicherweise direkt mit Docker geht, beispielsweise mit:
sudo docker search httpd
In der ersten Spalte findet Ihr den Namen des Images, hier schlicht "httpd", den Ihr am besten kopiert.

3. httpd-Container starten
Der Start des Containers ist im Grunde selbsterklÀrend - bis auf zwei Kleinigkeiten:
sudo docker start -it -d -p 7777:80 httpd
-it steht fĂŒr einen interktiven Container, -d fĂŒr "detached" (losgelöst) und sorgt dafĂŒr, dass die Kommandozeile anschlieĂend wieder frei ist. Ihr könntet auch einfach -dit schreiben, aber start it detached kann man sich so schön merken đ
Wichtiger ist der Schalter -p - der eigentliche Knackpunkt des Artikels: Ein Webserver wird wie bereits erwĂ€hnt ĂŒber Port 80 angesprochen. Was aber, wenn der Rechner, auf dem Docker lĂ€uft bereits einen eigenen Webserver hat? Wenn Ihr im Browser des Rechners dann localhost:80 eingebt, kommt eben die Webseite des Rechners, nicht des Containers. Also wird Port 80 des Containers auf den Port 7777 des Rechners umgeleitet. Wenn Ihr nun im Browser lokal localhost:7777 ansurft, seht Ihr, was der httpd-Container ĂŒber Port 80 auswirft. (Statt 7777 könnt Ihr natĂŒrlich auch einen sonstigen (freien) Port verwenden.)
Es ist genau diese Port-Umleitung, die es Euch ermöglicht, etliche Container/Dienste auf einem Rechner laufen zu lassen und getrennt anzusprechen. Das ist auch nötig, da es immer wieder Dienste gibt, die auf dieselben Ports setzen. Viele WeboberflÀchen arbeiten beispielsweise mit Port 8080, auch viele echte NAS.
4. httpd-Container testen
Testet zunĂ€chst, ob der Container ĂŒberhaupt lĂ€uft:
sudo docker ps
Die Ausgabe zeigt Euch die ID des Containers und einen generierten Namen. Das ist der Name des Containers - nicht verwechseln mit dem Namen des Images!
Nun könnt Ihr im Browser localhost:7777 aufrufen und solltet die Website des httpd-Containers sehen. Um ganz sicher zu gehen, könnt Ihr die Standardseite des Webservers verÀndern. Ruft dazu zunÀchst die Kommandozeile des httpd-Containers auf:
sudo docker exec -it ID-des-Containers bash
Dabei startet exec den bash-Terminal aus dem Container - Ihr seid nun "im" Container. Mit ls könnt Ihr Euch die Dateien anschauen und ĂŒberhaupt ganz normal auf der Kommandozeile arbeiten.

Die Standarddatei des Webservers (index.html) liegt im Verzeichnis htdocs. FĂŒgt also eine Zeile hinzu:
echo Hallo Welt >> htdocs/index.html
Verlasst den Container mit exit und ruft erneut im Browser localhost:7777 auf - jetzt solltet Ihr den Zusatz Hallo Welt sehen.

5. mpd-Container installieren
mpd steht fĂŒr Music Player Daemon, ein simpler Musik-Server, der zum Beispiel bei vielen Raspberry-Pi-Projekten zum Einsatz kommt. Bedienen könnt Ihr den mit "echten" Desktop-Clients, zum Beispiel Cantata, oder ĂŒber den Browser, sofern ein Client installiert ist - hier der bereits erwĂ€hnte Client175. Sucht also nach dem passenden mpd-Container:
sudo docker search client175
Verwendet das Image cdauth/mpd-client175 und startet es mit:
sudo docker run -it -d -p 9999:8080 -p 6600:6600 cdauth/mpd-client175
Der Zugriff auf die WeboberflĂ€che des Clients lĂ€uft wieder ĂŒber Port 8080, der hier auf Port 9999 umgeleitet wird - wie oben. ZusĂ€tzlich wird der Port 6600 veröffentlicht (p steht fĂŒr publish), nun aber auf dieselbe Portnummer. mpd selbst streamt die Musik ĂŒber Port 6600, muss also "aus dem Container heraus kommen" können. (Wenn auf dem Docker-Rechner auch ein mpd-Server laufen wĂŒrde, mĂŒsstet Ihr den Port wieder umleiten, also etwa 6601:6600.)
Zum Testen nutzt Ihr wieder sudo docker ps und im Browser localhost:9999 oder alternativ in einem mpd-Client wie Cantata (sudo apt-get install cantata) einfach die IP des Rechners, also localhost oder 192.168.178.100 - der Port 6600 ist dort bereits vorgegeben.

FĂŒr die Praxis: NatĂŒrlich soll Eure Musik nicht im Container liegen, sondern auf dem Docker-Rechner. Also mĂŒsst Ihr dem Container noch mitteilen, welcher Ordner das denn sein soll. Der modifizierte Startbefehl:
sudo docker run -it -d -p 9999:8080 -p 6600:6600 -v /home/mirco/mpd/music:/music cdauth/mpd-client175
-v /home/mirco/mpd/music:/music gibt in diesem Fall den Pfad /home/mirco/mpd/music als mpd-Musikpfad an - der hintere Teil, :/music ist immer identisch. Das ist Container-spezifisch! Generell solltet Ihr bei Images auch mal im Netz nachschauen, ob es nicht weitere Infos gibt! beim mpd-Container lieĂe sich zum Beispiel auch die Bibliothek noch auslagern. Eine Google-Anfrage nach "docker + image-name" genĂŒgt in der Regel.

6. Und jetzt: Nutzen und abrunden
Im Grunde seid Ihr schon fertig: Ab sofort könnt Ihr von ĂŒberall im LAN im Browser den Container-Webserver ĂŒber 192.168.178.100:7777 und den Container-mpd-Player ĂŒber 192.168.178.100:9999 aufrufen. Und selbstverstĂ€ndlich könnt Ihr auch auf dem Smartphone einen mpd-Client wie MPDroid installieren.

Weitere Dienste/Container installiert Ihr einfach nach obigem Muster. Vorsicht: Das geht nicht immer so einfach - im Zweifelsfall schaut auf der Homepage des Images vorbei.

NatĂŒrlich ist das System damit noch nicht ganz praxistauglich. Ihr mĂŒsst Euch zum Beispiel noch darum kĂŒmmern, dass Container gespeichert werden, sofern Ihr Ănderungen daran vornehmt. Und die Tools selbst, hier im Beispiel vor allem Client175, können/mĂŒssen ebenso noch eingestellt werden. Die supereinfache Variante: Packt Euer Docker-Projekt komplett in eine Virtuelle Maschine, startet die Container und schaltet sie nie wieder aus! Ihr könnt einfach die VM ĂŒber "Zustand der Virtuellen Maschine speichern" ausschalten - beim nĂ€chsten Start sind alle Container wieder da.
Ihr könnt Container aber auch einfach stoppen und spĂ€ter wieder starten, Eure Ănderungen bleiben erhalten:
sudo docker stop name-des-containers
sudo docker start name-des-containers
Mit Containern lĂ€sst sich noch viel mehr anstellen, von selbst vergebenen Namen bis hin zu professioneller Container-Verwaltung. Und nein, nicht alles ist intuitiv. Wenn man mal ehrlich ist: Container sind vor allem fĂŒr Nerds und professionelle IT-Anbieter wie Rechenzentren interessant. Aber mittlerweile gibt es so viele Images mit tollen Endnutzerfunktionen Out-of-the-Box, dass sich die kurze Einarbeitung schon dafĂŒr lohnt.
Und wenn Ihr nicht Euren Rechner als Nebenher-NAS nutzen, sondern ein echtes NAS selbst bauen wollt: Kauft Euch einen Raspberry Pi und setzt den ganzen Docker-Krempel dort auf. Dann bastelt Ihr Euch fĂŒr den httpd-Container noch eine simple HTML-Seite mit Links zu den anderen Containern (einfach MPD-Client
) und schon habt Ihr einen rudimentÀren NAS-Server.
Doch! Siehe „-it“
Hallo,
vielen Dank fĂŒr das interessante Tutorial.
Leider bekomme ich immer dieMeldung“unknown shorthand flag: ‚t‘ in -t“, wenn ich „docker start -it -d -p 7777:80 httpd“ eingebe… aber ich habe nirgends „-t“ eingegeben…
was mache ich falsch und wie kann ich es besser machen?
GrĂŒĂe F.T.