Was sind die Vorteile von Containern?
Ich beschäftige mich gerade mit docker und containern.
Ich verstehe die Vorteile noch nicht. Ich kann doch ganz entspannt software die ich mit docker images nutzen ganz gewöhnlich herunterladen und nutzen.
Wieso die vergleiche mit docker und virtuellen machinen. Bei vm's emuliere ich ganze betriebssysteme und mit containern nur software. Sind doch zwei völlig verschiedene Zwecke oder?
3 Antworten
Bei vm's emuliere ich ganze betriebssysteme und mit containern nur software. Sind doch zwei völlig verschiedene Zwecke oder?
Yes.
Ich kann doch ganz entspannt software die ich mit docker images nutzen ganz gewöhnlich herunterladen und nutzen.
Grundsaetzlich ja, aber Docker bzw. Container abstrahieren die Software vom Host-System und darin liegt der ganz grosse Vorteil.
Du kapselt deine Software in einem Container und entkoppelst diese vom Host-System, damit machst du Host-System und Software voneinander unabhaengig (waehrend beim reinen "Installieren" eine Abhaengigkeit zwischen Host und Software geschaffen wird).
Das Deployen von Containern ist auch eine ganze Ecke schneller als das Installieren im Host-System.
Auch sind Container portierbar, das macht Serverumzuege oder ein Skalieren in die Breite sehr viel einfacher.
Weiterhin kannst du z.B. 10 Apache Webserver und 20 Nginx Webserver auf demselben Host (oder derselben VM) betreiben, d.h. die Packdichte erhoeht sich aehnlich wie bei der Virtualisierung, nur eben eine Ebene weiter oben.
Downgrades von Software sind auch oft einfacher wenn man Container benutzt.
Dazu kommen noch die Vorteile (aber auch Nachteile) vom virtuellen Netzwerk, was mit Docker daher kommt. Ein Binden von z.B. hochzaehlenden Ports auf Localhost entfaellt damit.
Natuerlich eignet sich jede Software fuer den Betrieb in Containern, aber wenn dann ziehe ich das immer vor :)
Nicht ganz. Ueblicherweise hast du pro RDBMS Container (Postgres, MySQL usw.) ein Schema bzw. eine DB.
Die Daten selbst sollten genau nicht im Container liegen, die sind sonst weg wenn der Container weg ist ;)
Persistente Daten liegen entweder im Filesystem vom Host, oder auf einem Shared Storage oder in einem Volume (Docker hat da diverse Backends, die man benutzen kann).
Docker ist nicht dazu gedacht, Daten zu portieren, sondern eben Dienste.
An deinem Beispiel koenntest du deinen Kollegen einfach sagen, welchen Container du fuer die DBs benutzt hast und die koennen diegleichen verwenden, egal auf welchem Host.
Ah es tut mir echt leid aber ich habe den Sinn immernoch nicht verstanden.
Docker ist nicht dazu gedacht, Daten zu portieren, sondern eben Dienste.
Was ist mit Diensten gemeint? Software?
Ich verstehe das ich die RDBMS nicht im Betriebssystem speichere und keine config Dateien oder sonstiges auf dem Rechner habe. Aber der Vorteil ist mir nicht klar. Würde ich nicht normalerweise meine RDBMS installieren und gut ist. Dann ist es halt auf dem rechner gespeichert so what?
Was ist mit Diensten gemeint? Software?
Ja genau.
Würde ich nicht normalerweise meine RDBMS installieren und gut ist.
Ja, aber dann hast du einen Dienst der an den Host gebunden ist. Du kannst weder mehrere gleiche Dienste z.B. in unterschiedlicher Version benutzen, noch Dienst und Host unabhaengig voneinander aktualisieren.
Die Vorteile der Kapselung von Virtualisierung gegenueber Hardware sind im Prinzip diegleichen wie von Containern gegenueber nicht-Containern.
Ja so wie du's schreibst schon, aber emulieren ich mit Containern Software? Es gibt ja auch encrypter die Ordner in Container verschlüsseln um Platz zu sparen... Ich hätte gesagt Container sind sowas wie zip-archieve... Unwichtiges wird z.b. bei mp3 komprimiert. Beim zurückwandeln in z.b. ein wav "entsteht" halt das vorher wegkomprimierte nicht mehr, sondern das ist und bleibt verloren...
Die Frage geht um Container im Sinne von Virtualisierung, nicht Container im Sinne von Komprimieren von Daten oder Medien ;)
In dem Artikel den ich dazu lesen steht, dass container vor allem für Server software verwendet wird. Als beispiel wird wordpress oder postgresql genannt. Wo gerade da der Vorteil ist sehe ich nicht...
Als beispiel wird wordpress oder postgresql genannt. Wo gerade da der Vorteil ist sehe ich nicht...
Du entkoppelst Wordpress oder Postgres vom Host.
Wordpress nimmt da eine Sonderstellung ein, der offizielle Container bringt auch einen Webserver + SQLite mit, d.h. du hast mit einem einzigen Container Image ein ready-to-run Wordpress.
Auch Postgres in Containern lassen sich super betreiben, einfach weil du den Container unabhaengig vom Host z.B. Patchen kannst. Oder austauschen, d.h. ein Fallback ist sehr viel einfacher.
Hey Barnim, danke schonmal für die Antwort.
Ich habe es leider immernoch nicht verstanden. Nun gut, wenn ich beispielsweise Webshop habe dann ist der Server auf dem der shop läuft der Host richtig. Als serverseitiger Entwickler kann ich doch auch recht schnell postgres installieren und für den shop nutzen. Ich habe das mit der Entkopplung vom Host noch nicht verstanden.
Seit wann wird bei Docker etwas emuliert?
Es ist einfach eine Software die alle Abhängigkeiten in einer eigenen Sandbox mitbringt, so jede falls verstehe ich das System.
Es ist einfach eine Software die alle Abhängigkeiten in einer eigenen Sandbox mitbringt, so jede falls verstehe ich das System.
Sandbox wuerde ich es nicht nennen, aber es kommt dem ziemlich nahe. Am Ende ist Docker ein Cgroups on steroids mit dem man Prozesse/Dienste vom Host-System wegabstrahieren kann.
Man kann aber relativ einfach aus Containern ausbrechen bzw. ist das auch gewollt / Teil vom Design. Darum waere "Sandbox" nicht ganz passend.
Hi, ich weiß das hat nichts mit dem Thema zu tun. Doch du hast mal geschrieben Man solle Strg+alt+F(1-6) drücken. Habe ich gemacht. wie komme ich von dem Terminal zurück auf das normale Linux? Bitte Helf mir.
Beispielsweist steht auf einer webseite folgende Erklärung "Ein Container fasst eine einzelne Anwendung mitsamt aller Abhängigkeiten wie Bibliotheken, Hilfsprogrammen und statischer Daten in einer Image-Datei zusammen, ohne aber ein komplettes Betriebssystem zu beinhalten. Daher lassen sich Container mit einer leichtgewichtigen Virtualisierung vergleichen."
Wo ist der Vorteil herkömlichen installation der Anwendung?
Kann ich mir das so vorstellen, dass ich meinen Postgres container starte, da zwei neue Datenbanken und 30 Tabellen erzeuge, das auf einen Stick speichere und dann meinem Kollegen gebe und der kann dann meinen Container bei sich starten und der hat alle Datenbanken und Tabellen die ich erzeugt habe?
Ist es anders nicht oder schlechter portierbar?