2015-07-06 8 views
10

Wie wird die Isolation von Betriebssystemcontainern, die sich vom Kernel unterscheidet, zwischen vielen Prozessen bereitgestellt?OS-Containerisolierung versus Prozessisolierung

Jeder Prozess ist bereits von anderen Prozessen isoliert, die auf demselben Kernel ausgeführt werden. Wie unterscheidet sich diese Isolierung von der Isolierung durch Container?

+0

Meinst du wie Isolation funktioniert? – Salman

+1

Container bieten nicht nur Isolation. Sie sind auch bereitstellbare Umgebungen, denen ein vollständiges hierarchisches Verwaltungssystem zugeordnet ist. – MatBailie

Antwort

1

Wenn Sie unter "Betriebssystem-Container" etwas wie Dockers verstehen, ist meine Antwort darauf.

Auf Dockers können Sie die Speicher- und CPU-Auslastung für jeden Container begrenzen, den Sie auf demselben Computer einrichten. Hier ist ein Link, wie und einige der verschiedenen Möglichkeiten erläutert:

https://docs.docker.com/engine/admin/resource_constraints/

Während auf Prozesse, die Sie etwas ähnliches mit Job Objects tun können, die sie benötigen App in Ihnen kodiert werden.

https://msdn.microsoft.com/en-us/library/ms684161(VS.85).aspx

Hoffnung verstand ich die Frage gut.

1

Jeder Prozess ist bereits von anderen Prozessen isoliert, die auf demselben Kernel laufen.

Sind sie? Wie funktioniert kill -9? Ich kann einfach jeden Prozess erreichen und zappen, wenn ich genug Berechtigungen habe.

Container-Technologien wie Docker, rkt und LXC nutzen insbesondere zwei Linux-Kernel-Features, um eine "Containerisierung" zu erreichen.

Die erste ist namespaces. Von der Eröffnung Klappentext des Wikipedia-Eintrags:

Namensräume sind ein Feature der Linux-Kernels, die isolieren und Virtualisieren Systemressourcen aus einer Sammlung von Prozessen. Beispiele für Ressourcen, die virtualisiert werden können, sind Prozess-IDs, Hostnamen, Benutzer-IDs , Netzwerkzugriff, Interprozesskommunikation und Dateisysteme. Namespaces sind ein grundlegender Aspekt von Containern unter Linux.

So kann ich Namespaces verwenden, zum Beispiel zu beschränken, was ein Prozess kann sehen, oder die auf der Kernel-Ebene, sprechen ein Prozess kann. Ich kann die Kommunikation zwischen Prozessen und die Sichtbarkeit des Dateisystems so konfigurieren, dass mein kill -9-Befehl die Prozesse, die in einem anderen Namespace leben, nicht sehen kann und sie daher nicht einfach nur töten kann.

Zweitens ist control groups, die Ressourcengrenzen und Isolation ermöglicht. Cgroups lassen Sie uns einen Prozess sagen "Sie können nur 512 MB Speicher und 10% Host-CPU-Auslastung haben". Wenn ich einen hässlichen Befehl habe, der in der Lage ist, 99% der CPU zu verwenden, werden die anderen Prozesse auf dem Host nicht isoliert, und es muss nur gelegentlich 1% der CPU freigegeben werden. Mit Cgroups kann ich das allerdings ändern. Ich kann meinen hässlichen Befehl sagen "Sie bekommen nur 25% der CPU zu einem bestimmten Zeitpunkt" und das ist alles was es haben kann.

Die Sache zu erinnern, hier sind Linux Kernel-Funktionen, nicht einige angeschraubt System-Manager-Tool oder andere Software.Docker/rkt/LXC sind Plattformen und Werkzeuge, die sich um diese beiden Kernfunktionen des Kernels gruppieren. Sie nutzen einfach das, was bereits auf der grundlegenden Ebene vorhanden ist, und machen es dadurch besser nutzbar.