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.
Meinst du wie Isolation funktioniert? – Salman
Container bieten nicht nur Isolation. Sie sind auch bereitstellbare Umgebungen, denen ein vollständiges hierarchisches Verwaltungssystem zugeordnet ist. – MatBailie