Container in einer virtuellen Maschine ausführen?

15

Meines Erachtens sind Container viel leichter als VMs, da sie die Hardware nicht virtualisieren, sondern nur die in ihnen ausgeführte Software von der Software isolieren, die in anderen Containern des Systems ausgeführt wird.

Meine Situation ist so, dass ich es mir nicht leisten kann, zusätzliche Server zu kaufen, und auf meinen Servern laufen alle Hypervisoren. Ich muss mindestens 6 "Server" bereitstellen, um Instanzen einer relativ kleinen Webanwendung zu hosten (jede Instanz ist für einen anderen Kunden). Es wäre verschwenderisch, für jeden dieser Server eine neue VM bereitzustellen. Daher plane ich, zwei VMs einzurichten und eine der folgenden Aktionen auszuführen:

  1. Führen Sie mehrere Instanzen der Anwendung auf jeder VM mit virtuellen Hosts (Apache) aus. oder
  2. Richten Sie Container auf den VMs ein, um die Umgebungen zu isolieren.

In Anbetracht dessen ist mit Containersystemen ein nicht zu vernachlässigender Overhead verbunden, der die Verwendung in einer VM zu einer schlechten Idee macht, oder gibt es einen anderen technischen Grund, warum ich keine Container verwenden möchte?

Chris L
quelle

Antworten:

13

Docker ist im Vergleich zu einer VM SEHR leicht und ein VM-System sollte mit einwandfrei laufenden Containern funktionieren. Jeder Container wird im Wesentlichen als isoliertes System ausgeführt, sodass er aus Sicht der Systemstabilität sehr gut isoliert werden kann. Basierend auf Ihrer Beschreibung scheint dies der ideale Anwendungsfall für Docker zu sein. Wenn Sie mit Docker experimentieren, stellen Sie sicher, dass Sie die neueste Version verwenden. Einige der älteren Versionen weisen einige ziemlich schlimme Sicherheitslücken auf. Beim Ausführen von Docker sind einige Sicherheitsaspekte zu beachten.

SELinux - SELinux erkennt Container und erstellt automatisch ein zufällig benanntes MCS-Label für jeden Container. Dies trägt dazu bei, die Isolation sicherzustellen, da LXC-Container nicht als eigenständige Container betrachtet werden, obwohl sich dies verbessert.

USER-Direktive - In jeder Docker-Datei wird empfohlen, die USER-Direktive zu verwenden und den Benutzer als ein anderes Konto als root auszuführen (Standardeinstellung). Der Haken hier ist, dass der Benutzer auf dem System existieren muss. Es kann auch frustrierend sein, Dateien und Verzeichnisse für diesen neuen Benutzer zu verändern, aber es hilft, Ihr Risiko zu verringern. Normalerweise empfehle ich, auf Ihren Systemen einen "Containerbenutzer" oder ähnliches zu erstellen, um sicherzustellen, dass auf allen Systemen, die sich nicht mit anderen Teilen des Systems überschneiden, ein gemeinsamer Benutzer verfügbar ist.

Ansonsten ist es am schwierigsten, die Container zu verwalten und bei Bedarf zu aktualisieren.

theterribletrivium
quelle
3

Gibt es einen nicht zu vernachlässigenden Overhead im Zusammenhang mit Containersystemen, der die Verwendung in einer VM zu einer schlechten Idee machen würde?

Hilft Ihnen die Leistung von Docker Containers in VMware vSphere ?

oder gibt es einen anderen technischen grund warum ich keine container verwenden möchte?

Ich kenne Docker im Allgemeinen nicht, weil ich noch nicht damit gearbeitet habe. Ich bin der Meinung, dass die Verwaltungssoftware im Vergleich zur VM-Verwaltungssoftware immer noch nicht ausgereift ist. Ich bin jedoch ein vSphere-Administrator und daher wahrscheinlich voreingenommen.

In Anbetracht von Docker auf VMs wird CoreOS jetzt offiziell auf vSphere 5.5 unterstützt . Zumindest ist VMware der Meinung, dass Docker / Container auf VMs in Ordnung sind.

Mario Lenz
quelle