Was sind die Vorteile von Containern?

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 :)

redsky 
Fragesteller
 04.01.2020, 11:12
Auch sind Container portierbar, das macht Serverumzuege oder ein Skalieren in die Breite sehr viel einfacher.

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?

0
barnim  04.01.2020, 12:57
@redsky

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.

0
redsky 
Fragesteller
 04.01.2020, 15:33
@barnim

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?

0
barnim  04.01.2020, 17:03
@redsky
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.

1

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...

magnolie88  03.01.2020, 20:42

Das oben soll emuliere heißen (war Autokorrektur)

0
redsky 
Fragesteller
 03.01.2020, 20:56

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...

0
barnim  03.01.2020, 22:32
@redsky
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.

0
redsky 
Fragesteller
 04.01.2020, 08:59
@barnim

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.

0
redsky 
Fragesteller
 04.01.2020, 09:34
@redsky

Ah ich sehe gerade du hast weiter oben eine sehr ausführliche Antwort geschrieben.

Danke dir!

0
barnim  03.01.2020, 22:30

Die Frage geht um Container im Sinne von Virtualisierung, nicht Container im Sinne von Komprimieren von Daten oder Medien ;)

0

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.

Woher ich das weiß:eigene Erfahrung – Ich benutze seit 2007 Linux und habe LPIC101 und LPIC102
redsky 
Fragesteller
 03.01.2020, 21:46

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?

0
barnim  03.01.2020, 22:33
@redsky

Schau mal in meine anderen Antworten :)

0
barnim  03.01.2020, 22:36
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.

1
InvalidUser500  29.01.2020, 21:10

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.

0
Crimeofficial  02.12.2021, 14:17

wir vermissen dich Herr Elter

0