PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Docker für kleinen privaten Server Sinnvoll ?



Benngun
08.12.15, 08:44
Hallo zusammen,

ich spiele mit der überlegung meinen kleinen "Server" zu Hause mit Docker zu versehen.
Bisher läuft ein betagtes opensuse drauf mit curier imap server, spamassin, apache ( kleine web projekte, webmailer ... ) , samba freigaben, und KDE übern fernseher zum Filme / netflix und co laufen lassen.

mit Versionsupdates tu ich mich bisher was schwer weil ich das bisher immer über neuinstallation auf ner anderen partition mache. Damit ich nicht zu viele Leichen mitschleife und weil ich nicht jeden Sprung bisher mitgemacht hab.

Meine Überlegung war jetzt Docker für die "Server" funtionalität zu nutzen. und ggf nach einem releaswechsel vom OS einfach die container durchzuschupsen. Um Docker kennen zu lernen ( bisher hatte ich noch kaum berührung damit) sicher sehr sinnvoll, aber macht sowas auch auf Dauer Sinn? Besonders in hinblick auf die Applikationen im Container die ich ja auch updaten muß / will. Bisher peile ich das mit den layern noch nicht so ganz. Aber ich hab nach ersten Informationen da ein paar Bedenken entwickelt das es auf Dauer nicht so günstig sein könnte

marce
08.12.15, 09:03
Aus meiner Sicht ist Docker in Deinem Szenario nicht sinnvoll - die Release-Upgrades des OS musst Du weiterhin machen und um die Updates der einzelnen Dienste kommst Du auch nicht drumherum. Du führst eigentlich nur eine Zwischenschicht ein, um die Du dich auch noch kümmern musst.

Dein bisheriges Vorgehen sehe ich nicht mal als grundsätzlich schlecht an. Einfacher - so doof es sich anhört - machst Du es Dir vermutlich eher, wenn Du dir sauber dokumentierst, was Du bei einer Neuinstallation alles machen musst und welche Änderungen Du an der Konfiguration durchführst. Das in Zusammenspiel mit einer ordentlichen Backupstrategie ist vermutlich wesentlich einfacher, dauerhafter, weniger Arbeitsaufwändig und "dauerhafter" als irgendwelche App-Container zusammenzubasteln und zu durchzuschupsen.

Evtl. denkst Du über eine Basis-OS nach, welches Dir nicht alle ca. 12-18 Monate aufnötigt, ein Upgrade fahren zu müssen - aber das ist eine andere Sache.

Benngun
08.12.15, 10:09
Schade genau das was ich nach den ersten groben tutorials für Docker befürchtet hatte. Vorher mit den groben Infos hatte ich gehofft einfach nen Container zu erstellen, darin dann die Dienste einrichten und einfach pflegen zu können und bei einem Releasewechel vom OS einfach den Container schuppsen und freuen das ich weniger Aufwand hab.
Dokumentiert hatte ich eigentlich ganz passabel bei der letzten Umstellung, bloß ich Depp finde das Dokument nicht mehr :eek:

Naja die zweite Hoffnung war ein bischen Erfahrung mit Docker Sammeln bevor ich auf Arbeit damit konfrontiert werde. Dann muß ich halt so ein bisschen rumspielen ;)

marce
08.12.15, 10:19
Es hindert Dich ja niemand, Docker nicht trotzdem auszuprobieren.

Das Hauptproblem - welches ich mir auch erst gerade eben ergoogled habe, hoffe, die Info ist korrekt - ist dabei aber: Docker-Container sind nicht OS-unabhängig. Sprich Du kannst ein Container von System A (z.B. OpenSuse) nicht einfach auf ein Debian-System schieben. Dafür ist die Abstraktionsebene zu gering - dafür bräuchtest Du eine VM :-) (http://www.informationweek.com/strategic-cio/it-strategy/containers-explained-9-essentials-you-need-to-know/a/d-id/1318961, ziemlich am Ende des 1. Absatzes) - ich würde damit auch vermuten, daß da selbst ein Versionsprung innerhalb des selben OS (also z.B. 13.1 auf 13.2) kritsch sein kann.

Docker ist "ok", wenn Du über eine größere Zahl identischer Systeme die gleiche Applikation verteilen (bzw. bereitstellen) willst - "angedacht" aber eher für Entwicklung, der Prokduktionseinsatz ist da eher ein ungewollter :-) Nebeneffekt. Siehe auch die ziemlich erschreckenden Berichte über das Thema "Docker-Security" (ok, besser wie nichts, aber eigentlich nicht das, was man will)

nopes
08.12.15, 11:19
Docker-Container sind nicht OS-unabhängig.; würde mich doch sehr wundern -> https://www.youtube.com/watch?v=pGYAg7TMmp0&list=PLoYCgNOIyGAAzevEST2qm2Xbe3aeLFvLc

Das sind drei Videos (englisch; etwa 10 Minuten pro Video) zum Thema. Wie auch immer, kann das System Docker kann man alle Docker Images verwenden, um damit beliebig viele Container zu betreiben - das ist äquivalent zu Vagrant. Der Hauptunterschied besteht für mich darin, dass die zur Verfügung stehenden Ressourcen besser geteilt werden, als das zB mit Vagrant der Fall ist und auch das die Images kleiner gehalten werden können, als bei Vagrant.

Über den Sinn oder Unsinn der Verwendung im genannten Szenario kann man schon diskutieren, gepaart hier mit - http://stackoverflow.com/questions/28734086/how-to-move-docker-containers-between-different-hosts kann es schon vieles einfacher machen.

BetterWorld
08.12.15, 13:05
Das wird wohl eine Endlosdebatte.

Ich denke, es ist sogar sehr sinnvoll alle Serverdienste zu dockern.

Auf unserem Debian- Server habe ich schon mehrere openSUSE Container ohne jede Änderung schlicht gestartet.
Liefen alle ohne Heckmeck.
Sofort.

Natürlich ist Docker relativ neu und hat seine Ecken und Kanten.
Wenn man sich aber die Mühe macht, es wirklich zu lernen, hat man diese Schwachstellen schnell unter Kontrolle.
Da sich Docker auch rasend schnell entwickelt, sollte man Artikel, Dokus und Tutorials nicht allzu ernst nehmen.
Meist sind die dort angeführten Schwachstellen schon beseitigt, wenn man aktuell einsteigt.

Es ist auch nicht angebracht "echte Virtualisierer" mit Docker zu vergleichen. Docker zielt auf ein anderes Szenario.
VM- Lösungen zielen darauf einen kompletten Rechner völlig abgeschottet laufen zu lassen.
Docker will aber einzelne Dienste/Programme samt ihren Daten vom eigentlichen OS abschotten.
Und sie portable machen.

Für den TE sind die einige Vorzüge von Docker zwar nicht wirklich interessant, die Menge der Vorteile überwiegt dennoch.
Ein Dockercontainer startet irre schnell und lässt "echte VM- Lösungen" (also alle, die einen Hypervisor einsetzen) weit hinter sich.
Damit kann man hervorragend LoadBalancing betreiben und unter Last einfach weitere Container hinzuschalten.
Auf unserem Debian- Server habe ich als primären Webserver nginx als Proxy in einem Container laufen. Alle virtuellen Hosts sind lediglich weitere Container. Mal mit uwsgi, mal ohne, aber alle mit eigenem nginx. Das mag auf den ersten Blick ziemlich doof scheinen, aber tatsächlich ist das Gesamtsystem wesentlich reaktiver.
I
Ein unschätzbarer Gewinn an Sicherheit. Und jederzeit zu- und abschaltbar.
Für das ganze Theater hab ich ein paar Billigscripts gehackt, so dass selbst ein Unkundiger die jeweiligen Dienste starten/stoppen/zuschalten kann.

Das Argument, man müsse nun zusätzlich sich um die Updates selber kümmern, ist auch nicht so wirklich zugkräftig.
Meine Testcontainer checken beim Start schon auf Updates und holen sie sich einfach. Nicht ein Jota muss ich dazu tun.
Ob man das jetzt in einem Production Container haben mag, ist eine andere Frage. Aber man kann es im Dockerfile einfach so einrichten. Man kann auch andersrum eine Version festlegen und alle Updates ignorieren lassen, solange bis man den Container mit einem weiteren Parameter startet.
Kurz: Man kann das Update Problem komplett eliminieren.

Da ich extensiv auf LVM setze, habe ich für die Container ein weiteres Level an Abschottung. Im Moment bastele ich eine Mountlösung für die Container, so dass die Container ihre "Datenpartitionen" auf dem eigentlichen Host selbst mounten können, via Kerberos, der wiederum in einem Container läuft. Falls ich das hinkriege, kann sogar der Host selbt gehackt sein, die Volumes der Container sind aber dennoch nicht lesbar. Wieder ein Zugewinn an Sicherheit.

Und den ganzen Krempel kann ich -sogar ohne ein Docker-Repo- einfach auf einen neuen Server umziehen.
Mit drei Befehlen laufen sie dann auch schon auf dem neuen Server: Docker auf dem neuen Server installieren, Kopierjob für Images, Datenvolumes und die Scripte aufrufen, Container starten. Done.

Bei dem hier geschilderten Szenario ist das in jedem Fall ein ziemlicher Zugewinn an Flexibilität und Sicherheit bei wesentlich geringerer Hardwareanforderung und höherer Performance.

Mögen nun diese Vorteile für den TE alle nicht so wirklich wichtig sein, ein gnadenloser Vorteil bleibt:
Er findet die Container schneller, als seine Doku. Im Ernstfall.

Hmmm, vielleicht sollte ich meine Argumentation noch mal überdenken.

fork
08.12.15, 20:49
Tach. Bin jetzt auch eher der Containerunkundige - teils skeptisch - teils sehr interessiert. Das was ich sehr reizvoll finde, ist verschiedene Umgebungen mit wenig Overhead laufen zu lassen. Meistens reicht Debian stable. Manchmal haben unterschiedliche Projekte unterschiedliche Anforderungen. Oder wie war das mit den Nebenwirkungen: Ich brauche unbedingt das neue Feature A von Paket B. Geht aber nicht, da mir ein Upgrade die Pakete C,D und E zerlegt. Und nu? Selber kompilieren? Upgrade auf Unstable? Uargh
Uargh!

Eins meiner Ideen für meinen Aufgabenbereich ist ein Intermediate-MTA den ich gerne zusätzlich redundant in die Mailkette reinhängen will um die Spamerkennung zu verbessern.

Benngun
09.12.15, 11:59
Danke für den ausführlichen Beitrag BetterWorld.
Erzeugt ein update einen weiteren Layer ( welche ja numemrnmäßig begrenzt sind !?) oder ist das aus dem tutorial das ich bisher durchgelesen hatte schon veraltet?
Wenn das mit dem updaten der Software ( postfix, imap etc ) im Container ähnlich simpel läuft wie in einem normalen System dann spricht eigentlich wieder mehr für docker als dagegen :)
Ich benötige zwar nicht diese Flexibilität mit plötzlich mehr Last fertig zu werden aber den Rest wüeder es mir wohl so erleichtern wie ich es mir bisher erhofft habe

BetterWorld
09.12.15, 13:49
Ich hatte bislang noch nie ein Problem damit.
Es ist auch nicht Docker, sondern das verwendete aufs, das ein Limit von -glaube ich- 42 Layers hat.

So man seine Images und Containers ein wenig pflegt, wird man damit auch eher nicht an Grenzen stossen.
Dieses Limit ist pro laufenden Container.
Solche "Grenzüberschreitungen" entstehen, wenn ein Image zu viele Parents hat.
Da ich, so der Container einen gewissen Stand and Funktionalität samt zugehörigen Daten erreicht hat, ihn in ein neues Image committe/exportiere, wird dieses Problem auch nicht auftreten.

Ich habe aber ehrlich gesagt, noch nicht einmal geprüft, ob das wirklich so ist. Ich lösche auch gerne den ganzen Krempel, um dann mit Tabula Rasa die Images neu zu starten. Ein einfache, ignorante aber wirksame Methode.