Docker & CoreOS auf Rootserver M Gen 6

  • Servus zusammen,


    ich würde gerne von einem bestehenden VServer bei Hosteurope mit Ubuntu 12.04 LTS und Plesk 15 auf einen Rootserver mit CoreOS umsteigen. Großer Schritt, wird bestimmt erst mal eine steilere Lernkurve, aber in den letzten Jahren war Plesk mehr im Weg und Virtuizo mit seinem Kernel hat alles eingeschränkt.
    So viel zu der Vorgeschichte.


    Auf dem neuen Server möchte ich alles Containern. Weil das ja so viel Zukunftssicherer und wenn richtig gemacht sicherer sein soll.
    Hat der Rootserver M genug Dampf für folgendes Setup:

    Docker Container für

    • Mailserver mit Roundcube Frontend
    • Webgallerie (koken)
    • owncloud
    • mumble
    • fileserver
    • und noch ein extra php_fpm für eigene HMTL Dokumente


    Was ich bisher gelesen habe, sind die Docker Images für diese Anwendungen alle "fat" und bringen eine Webserver mit - das müsste ganz schon Overhead erzeugen.
    Hat jemand Erfahrungen mit Docker? Hat der Rootserver M genug Reserven für den Overhead, oder ist der sogar vernachlässigbar mit Docker?


    Ich bin mir nicht sicher, ob nicht doch ein Ubuntu 16.04 ab April die bessere Wahl wäre - nur habe ich mit 12.04 auf Plesk die Erfahrung gemacht, dass nach ein paar Jahren nur noch Heftpflaster und Hacks eine Modernisierung ermöglichen.


    Mit CoreOS und Docker könnte ich diese Woche noch loslegen :)

  • Was ich dir auf jeden Fall sagen kann: Ich habe einen root-Server M (sogar ne halbe Nummer kleiner, hat nur virtual CPU cores) und in etwa dieselbe Software-Zusammenstellung wie du (kleines Setup für ca. 10 Leute) und dafür reicht der Server locker aus, er langweilt sich sogar ziemlich vor sich hin. Allerdings nutze ich keine Container, sondern alles läuft direkt auf dem "Blech".

  • Docker ist generell sehr sparsam was das angeht. Auf einem meiner Server läuft PostgreSQL, Redis, GitLab, Mattermost, Disqus und noch zwei, drei weitere kleinere Sachen in nem Dockercontainer. Alles ohne besondere Belastung. Aber einfach schöner da man nicht das Hauptsystem mit Software zuballert.

  • Hallo,


    ich habe auf meiner VM mehrere Container laufen ohne spürbaren Overhead. Wenn dir die normalen Images zu fett sind kannst du dir auch einfach eigene bauen, ich empfehle Alpine Linux als Basis. Bei den Containern solltest du nur darauf achten dass sie automatisch starten weil die VMs ja gelegentlich rebootet werden. Außerdem brauchst du bei mehreren Web-Containern noch einen eigenen Proxy davor.

  • Danke euch für eure Antworten.
    Genau das mit dem zumüllen ist auf Lange Frist gold wert. Gerade bei kleinen privaten Servern, wo man "nur mal schnell" etwas ausprobieren möchte oder unbedingt diese eine library apt-get'en muss - da müllt sich das System mit der Zeit zu. CoreOS und strike Trennung in Container hält das Haus sauber :)


    Ich habe mir einen Rootserver bestellt und CoreOS läuft schon.


    Testweise habe ich das offizielle owncloud image eingespielt, welches mit nginx und php daher kommt.


    Was ich aber noch nicht ganz verstehe: Wenn nun noch z.B. ein wordpress dazu kommt, eine webmailer paket oder eine gallerie, dann bringen die alle u.U. andere base images mit und ihre eigenen Webserver. Die idlen dann die ganze Zeit und cachen RAM. Festplattenplatz ist die eine Sache, aber wie ist das mit cycles, RAM und Pagefiles?


    Teilen sich Docker container alle Resourcen fair auf, d.h. wenn in einem Container ein Webserver nichts zu tun hat, nimmt ihm Docker dann die Ressourcen weg und gibt diese frei? Zugegeben, dass könnte ich auch gerade googlen, aber vielleicht hat jemand Erfahrungen?


    Grüße und Danke

  • Was ich aber noch nicht ganz verstehe: Wenn nun noch z.B. ein wordpress dazu kommt, eine webmailer paket oder eine gallerie, dann bringen die alle u.U. andere base images mit und ihre eigenen Webserver. Die idlen dann die ganze Zeit und cachen RAM. Festplattenplatz ist die eine Sache, aber wie ist das mit cycles, RAM und Pagefiles?


    Teilen sich Docker container alle Resourcen fair auf, d.h. wenn in einem Container ein Webserver nichts zu tun hat, nimmt ihm Docker dann die Ressourcen weg und gibt diese frei?


    Ja, genau so läuft das. Docker Container sind keine VMs sondern nur eigene Namespaces. Alle Prozesse im Container sehen ihr eigenes Dateisystem, ihren eigenen Speicher und nur Prozesse innerhalb des Containers aber im Prinzip sind das einfach nur Prozesse auf dem Host.


    Wenn du viele Webserver laufen hast frisst das schon etwas mehr Speicher als wenn du nur einen hast. Nginx sollte etwas schlanker sein als Apache, damit kannst du das ein wenig abspecken. Ram, Cycles und Swap (Pagefile gibt es nur unter Windows) werden alle brüderlich geteilt, da gibt es keinen Overhead.

  • Das klingt alles so dermaßen vielversprechend, dass ich mich da schön langsam einarbeiten werde.


    Danke für die Tips, Alpine Linux schaue ich mir als base genauer an.


    Die fertigen images aus dem docker hub nutzen als Basis einen bunten Blumenstrauss von Linux flavors, für den Anfang werde ich es mal mit denen probieren und dann selbst meine images nachbauen, um das System im Nachgang zu verschlanken. Mit den persistenten Daten in Volumes kann ich ja die images mit neuen bases im dockerfile umkonfigurieren,sehen ob das läuft und wenn nicht geht nichts verlorern...das ist...alles so flexibel. wow.


    Grüße

  • Für alles kleineren Einsätze (z.B. privat) würde ich von Docker-Containern abraten, weil diese Art von Containern gar nicht geupdatet werden sollte. Die Idee hinter diesen Container ist, dass sie jedes Mal komplett ersetzt werden sollten. Also nicht in dem Container ein "yum update", sondern von außerhalb ein neues Image holen und das alte ersetzen.


    Für den privaten Einsatz habe ich lxd-Container im Einsatz. Das sind volle Betriebssysteme ohne Kernel. Also wie Virtuozzo, bloß mit Standard-Kernel. Die Einrichtung habe ich hier beschrieben:


    Netzwerk für Container LXD / OpenVZ mit eigener IP auf Netcup Root Server KVM

  • Das ist eine philosophische Frage. Der Gedanke hinter Docker ist ja gerade dass das gesamte System über eine kleine Config-Datei (Dockerfile) beschrieben ist und sich jederzeit ohne Probleme neu bauen lässt. Dadurch hat man alle möglichen Vorteile aber man sollte dann natürlich auch keine Änderungen (z.B. Updates) per Hand außerhalb des Dockerfiles vornehmen.


    Außer diesem philosophischen Unterschied sehe ich keine großen technischen Unterschiede (beides basiert auf LXC), oder hab ich da was übersehen?

  • Meine letzten Antworten wurden entweder noch nicht freigeschaltet, oder kamen nicht durch.
    Wenn ich das recht lese müsste LXD mehr overhead produzieren, da in dessen containern vollwertige OS virtualisiert werden.
    Wenn ich mehrere Container mit ähnlichen Aufgaben anlegen würde, also z.B. wordpress und owncloud trennen mag, dann habe ich pro container vollwertige virtuelle Maschinen die ihre Ressourcen nicht teilen.


    Das Layer Konzept von Docker würde dies z.B. besser machen. Daher ist mehr der Vorteil von LXD für Einzelserver noch nicht ganz klar.


    Ich sehe bei Docker die Verlockung, komplett auf images auf dem hub zu setzen und damit die Sicherheit und Integrität der Appliances in die Hände von Dritten zu geben, die die images pflegen, oder dann einfach irgendwann aufhören.


    Danke für eure Tips auf jeden Fall. Ich denke ich lese mich weiter in Docker ein bevor ich loslege. Wenn ich zu schnell fertige images nutzen, mülle ich mir nur wieder das System zu und baue nix eigenes :)

  • Habe ich mir mal durchgelesen :)
    Allerdings stehen da einige Sachen die, von dem was ich bisher gelesen habe, Quatsch sind:

    • Der Autor sagt postfix könne nicht laufen
      In der strengen Auffassung von einem Prozess pro Container ist das richtig, aber in der Realität sind viele der images auf docker hub und selbst die Beispiele Kombinationen von verschiedenen Prozessen zu einer Art Dämen im Container. Es gibt auch einige Postfix Images
    • Vendor Lock-in
      Ja, aber Docker ist Open-source, selbst wenn ein eigenes Containerformat entwickelt wird
    • Keine Kontrolle oder Signatur von images aus dem Hub
      Stimmt nur für community images, nicht aber für die base images. Ich sehe hier auch keinen Unterschied zu alternativen repositories von Ubunut o.ä. Vertrauen ist eine Sache. Auf Docker hub kann man auch in die images vor dem pull reinschauen und sich vergewissern, ob Schabernack getrieben wurde. Eine chain of trust bieten manche zudem ebenfalls an. Die Hashes der einzelnen image layers ermöglichten zudem eine Kontrolle und verhindern das unterjubeln von manipulierten basis paketen.


    Kurz, ich bin gerade ziemlich überzeugt. Noch kein Fanboy, noch habe ich gar nichts zum laufen gebracht :thumbup: Alle theorie ist grau :evil:

  • Meine letzten Antworten wurden entweder noch nicht freigeschaltet, oder kamen nicht durch.
    Wenn ich das recht lese müsste LXD mehr overhead produzieren, da in dessen containern vollwertige OS virtualisiert werden.
    Wenn ich mehrere Container mit ähnlichen Aufgaben anlegen würde, also z.B. wordpress und owncloud trennen mag, dann habe ich pro container vollwertige virtuelle Maschinen die ihre Ressourcen nicht teilen.


    Das Layer Konzept von Docker würde dies z.B. besser machen. Daher ist mehr der Vorteil von LXD für Einzelserver noch nicht ganz klar.


    Ich sehe bei Docker die Verlockung, komplett auf images auf dem hub zu setzen und damit die Sicherheit und Integrität der Appliances in die Hände von Dritten zu geben, die die images pflegen, oder dann einfach irgendwann aufhören.


    Danke für eure Tips auf jeden Fall. Ich denke ich lese mich weiter in Docker ein bevor ich loslege. Wenn ich zu schnell fertige images nutzen, mülle ich mir nur wieder das System zu und baue nix eigenes :)


    Docker ist m.E. eher ein Werkzeug für Entwickler, die damit ihre Anwendungen unter die Leute bringen, bzw. selbst anwenden können. Zum Beispiel große Hoster, die selbst entwickeln, bzw. kompilieren. So habe ich Docker jedenfalls verstanden. Denn wie Du schon schreibst, sind die Quellen für Docker-Container zum Herunterladen eher Zweifelhaft. Eine wichtige Komponente von Linux sind ja gerade die Repositories. Nicht nur die der Distributionen. NGNIX biete z.B. Repos mit aktuellen Binaries für sehr viele Distros an. Bietet NGINX auch Docker-Container?


    LXD ist wie Virtuozzo, bloß aktuell und mit Mainline-Kerneln. Du hast nach wie vor mit normalen Distributionen zu tun, aus deren Repos Du die Software beziehst. Es gibt zwar Images, die man sich auch zieht, die aber nur die Erstinstallation vereinfachen. Danach pflegt man die Gäste wie den Server.


    Docker ist ein prima Werkzeug. Sich damit auszukennen schadet auf jeden Fall nicht. Aber wenn man kein Entwickler ist, dann eignet sich lxd/lxc (gibt es auch von Proxmox) m.E. erheblich besser für kleine Deployments als Docker. Aber das ist auch Geschmackssache. Ich verlasse mich gerne auf die klassischen Distributionen. Ich kenne mich mit der Docker-Community auch nicht so gut aus. Vielleicht werde ich auch einfach nur alt. :P