Webserver als Container Station?

  • Hallo zusammen,

    Ich habe eine Frage zur Nutzung der Container Station und hoffe, ihr könnt mir dabei weiterhelfen.


    Nach gut acht Jahren möchte ich mein altes NAS QNAP TS-219P II in die Rente schicken und hab mir dafür ein QNAP TVS-472XT geholt.

    Aufgerüstet bzw. ausgestattet habe ich es mit 32GB RAM und einer i7-8700T CPU.


    Das NAS möchte ich gerne auch als Webserver nutzen.

    Von der Idee, wie früher den QNAP eigenen Webserver zu nutzen, habe ich mich distanziert, da ich gerne möglichst viel selbst konfigurieren möchte, also auch die PHP-Versionen, MySQL/MariaDB-Versionen etc.


    So bin ich auf die Container Station gestossen. Ich habe auch schon einige Container wie MariaDB oder phpMyAdmin getestet.


    Nun zu meiner Situation:
    Ich möchte eine Möglichkeit haben, wie bei einem Webserver üblich, meine Projekte in einem root-Ordner abzulegen und dann direkt darauf zugreifen zu können, z.B. über eine IP wie http://MEIN-NAS:80/MEINE-WEBSITE

    Ich habe auch einen passenden Container dafür gefunden, wie Docker-LAMP.
    Der bietet einen simplen Linux Server mit Apache, PHP und MySQL an.


    Jedoch frage ich mich, ist das überhaupt Sinn der Sache?

    Docker Container haben ja den Vorteil, dass ich keine komplette VM's benötige um ein bestimmtes Programm auszuführen, sondern sie bestehen nur aus einer Applikation um möglichst modular zu sein.


    Andererseits möchte ich mir dafür auch keine VM aufsetzen, weil es rein von der Performance doch einen grossen Unterschied zwischen der Container Station und der Virtualization Station gibt.



    Könnt Ihr mir einen Rat geben, was in meinem Fall sinnvoller wäre bzw. welche Erfahrungen habt ihr so mit Webservern als Docker oder VM gemacht?

  • Wenn die docker Applikation ein LAMP Server ist, dann kann der auch so viel wie ein LAMP server halt .. ich versteh jetzt nicht die Frage

  • Sorry hätte es anders beschreiben sollen.

    Mir geht es grundsätzlich um die Frage ob es effizient ist eine docker Applikation als LAMP Server zu nutzen, wenn ich das System möglichst modular nutzen will und bei Komponenten wie PHP- und MySQL-/MariaDB unterschiedliche Versionen nutzen möchte.

    z.B. phpMyAdmin und MySQL/MariaDB gibt es auch als separate Applikationen, die ich wiederum auch mit anderen Applikationen kombinieren kann.

    Und daher die Frage, wie ihr den Webserver auf dem NAS nutzt und was ich optimieren könnte?

  • Vorab : ich hoffe Du willst den Server nur lokal nutzen, weil das ansonsten ein massives Sicherheitsproblem wird. Ansonsten ist ein Container immer wesentlich effizienter, da quasi der ohnehin schon vorhandene Kernel direkt mitbenutzt wird. Im Prinzip ist ein Container sowas wie eine Blende, die vor das Dateisystem gepappt wird und den Applikationen vorgaukelt, dass sie ein komplett eigenes Dateisystem vor sich haben. Im Prinzip werden die Anwendungen Schablonenartig über die "Images" zusammengebaut, so dass es am Ende für die Applikation eben so aussieht, als ob sie komplett in ihrer eigenen Umgebung läuft. Das macht das Updaten dann entsprechend mühseliger, weil die Images eben statisch sind und die Bereiche, in die geschrieben werden soll, penibelst definiert werden müssen. Aber davon abgesehen ist es eben sehr effizient.


    Eine VM dagegen ist ein komplettes OS mit allen Schikanen, welches nur die CPU und die restliche Hardware virtualsiert. Daher ist es aus meiner Sicht viel einfacher zu handhaben, weil alles in einer Datei liegt, welche die Festplatte emuliert und noch ein paar Konfigurationsdateien, die z.B. den RAM Ausbau, CPU Kerne etc. beschreiben. Ansonsten ist man hier wirklich gut isoliert vom Rest des Systems. Ich nutze gern Turnkeylinux, das bringt schon alles mit was man so braucht. Aber gibt auch viele andere fertige VMs, die man nutzen kann für seine Zwecke. Oder man installiert es eben komplett von Grund auf. Aber das ganze braucht natürlich mehr Resourcen, weil ein ganze OS mitläuft und die Hardware virtualisiert wird. Dafür kann die Anwendung eben nicht so leicht durch Fehler im Kernel bspw. zugriff auf das System erlangen. Wenn maximale Performance wichtig ist, dann bleibt nur der Container Ansatz. Bei Deiner HW würde ich sagen, dass das auch schon ziemlich effizient laufen dürfte. Auf meiner 673A bin ich da eigentlich sehr zufrieden, und selbst die 451 hat reine Server VMs recht ordentlich ausgeführt.

  • Danke für die ausführliche Antwort!
    Ja der Server ist nur lokal (oder höchstens mit VPN von aussen) zu erreichen. :)
    Hab da in der Vergangenheit auch schon üble Erfahrungen gemacht ...

    Genau das Thema Updates bei Docker ist etwas, womit ich mich noch intensiver beschäftigen muss.
    Im Idealfall soll es so funktionieren, dass ich die gemappten Ordner für die Files und die für die Datenbank sichern kann, den Container löschen und neu erstellen, und dann die Files + Datenbank wiederherstellen kann (bei der Datenbank muss ich noch schauen wie ich das automatisieren kann).


    So ungefähr ist die Idee dazu.

  • Im Idealfall soll es so funktionieren, dass ich die gemappten Ordner für die Files und die für die Datenbank sichern kann, den Container löschen und neu erstellen, und dann die Files + Datenbank wiederherstellen kann (bei der Datenbank muss ich noch schauen wie ich das automatisieren kann).

    Solange die Daten und die Anwendung sauber voneinander getrennt sind sollte es recht gut gehen. Im Zweifel nimmt man offizielle Images, die auch wirklich dauerhaft gewartet werden. Wenn man sich seinen Stack aus mehreren Images selbst zusammenbaut wird es glaube ich ziemlich komplex, und das ist eben der Pferdefuß bei den Containern. Da muss man mehr Weitblick haben, weil man eben keinen Paketmanager zum updaten nehmen kann.

  • Aufgerüstet bzw. ausgestattet habe ich es mit 32GB RAM und einer i7-8700T CPU

    Dann kommt es doch nicht wirklich auf den Performanceunterschied an. Ich würde das als VM machen, ist einfach flexibler.

  • Vll kann uns der Thread Ersteller ja einfach mal sagen welche Anwendungen er genau laufen lassen möchte, dann können wir auch gezielte Antworten darauf geben ;)

  • Vll kann uns der Thread Ersteller ja einfach mal sagen welche Anwendungen er genau laufen lassen möchte, dann können wir auch gezielte Antworten darauf geben

    Eigene Webprojekte. Das können ganz simple HTML-Seiten sein, oder auch eigene CMS- oder Blogsysteme wie TYPO3 und Wordpress.

    Früher habe ich dafür den integrierten Webserver auf meinem alten NAS genutzt, aber der ist zu mühsam wenn ich die PHP-Version oder MySQL-Version wechseln möchte um neue Funktionen zu testen.


    Oder meinst du, welche Docker-Anwendungen ich sonst noch nutzen möchte?
    Das ist noch offen. Es könnten Anwendungen sein wie JDownloader/pyLoad, eine Passwortverwaltung wie KeePass, PassManager oder weitere.

    Aber die würde ich ja unabhängig des Webservers nutzen.