2015-09-24 11 views
7

In Docker teilen sich Gastbetriebssysteme denselben Kernel wie Host OS.Was ist mit einem freigegebenen Kernel in Docker gemeint?

Kann jemand mehr darüber ausarbeiten.

Lassen Sie mich haben Centos os, die einige Kernel-Version haben, wenn wir ubuntu Bild ziehen dann haben sie unterschiedliche Kernel, dann wie können wir sagen, dass sie den gleichen Kernel haben?

Antwort

10

wenn wir ubuntu Bild ziehen, dann haben sie verschiedene Kernel

Nein es nicht: es hat nicht den Teil Kern: es beruht auf dem Kernel des Host (der Lauf Docker Motor) für alle system calls.

Wie in "Docker vs Virtualization" erwähnt:

Zunächst wurde Docker als eine Abstraktionsschicht auf Linux Container gebaut (LXC). LXC selbst ist nur eine API für die Linux-Containment-Funktionen.
Beginnend mit Docker 0.9, ist LXC nicht mehr der Standard und wurde durch eine benutzerdefinierte Bibliothek (libcontainer) ersetzt, die in Go geschrieben wurde. Der Vorteil von libcontainer ist eine konsistentere Schnittstelle zum Kernel über verschiedene Linux-Distributionen hinweg. Das einzige Problem ist, dass es Linux 3.8 und höher benötigt.

Weitere Informationen finden Sie unter "Why Understanding User Space vs. Kernel Space Matters".
Auch "Operating System Containers vs. Application Containers":

Container sind die Produkte von Betriebssystem-Virtualisierung. Sie stellen eine schlanke virtuelle Umgebung bereit, die eine Reihe von Prozessen und Ressourcen wie Speicher, CPU, Datenträger usw. vom Host und anderen Containern gruppiert und isoliert.
Die Isolation garantiert, dass alle Prozesse innerhalb des Containers keine Prozesse oder Ressourcen außerhalb des Containers sehen können.

https://risingstack-blog.s3-eu-west-1.amazonaws.com/2015/05/os-virtualization.jpg

OS Container sind virtuelle Umgebungen, die den Kern des Host-Betriebssystem teilen, aber Benutzerraum Isolation

https://risingstack-blog.s3-eu-west-1.amazonaws.com/2015/05/os-containers.jpg

Wie erwähnt in "Do all Linux distros use the same kernel?" bereitzustellen, Ein Kernel kann über Distribution verteilt werden, selbst wenn jede Distribution ihre eigene Konfiguration des Kernels hat.

+0

Von, können Sie bitte mehr erarbeiten, wie es sich auf Host-Kernel, wenn es zieht seinen eigenen Kernel – gaurav

+0

@gaurav ist es * nicht * zieht seinen eigenen Kernel: Es beruht auf dem Kernel bereits vorhanden. – VonC

+0

Voc, aber wir wissen, Centos, Ubuntu haben unterschiedliche Kernel dann wie kann es auf Host-Kernel verlassen, wie Ubuntu kann Centos Kernel verwenden – gaurav

0

Docker verwendete früher Linux Container (LXC), wechselte jedoch zu runC (früher als libcontainer bekannt), das im selben Betriebssystem wie sein Host ausgeführt wird. Dies ermöglicht es, eine Menge der Host-Betriebssystemressourcen zu teilen. Es verwendet auch geschichtete Dateisysteme wie AuFS. Es verwaltet auch die Vernetzung für Sie.

AuFS ist ein geschichtetes Dateisystem, so dass Sie einen schreibgeschützten Teil und einen schreibenden Teil haben und diese zusammenführen können. Sie können also die gemeinsamen Teile des Betriebssystems als schreibgeschützt verwenden, die von allen Ihren Containern gemeinsam genutzt werden, und dann jedem Container eine eigene Halterung zum Schreiben geben.

Nehmen wir an, Sie haben ein Containerbild, das 1 GB groß ist. Wenn Sie eine vollständige VM verwenden möchten, benötigen Sie 1 GB x Anzahl der gewünschten VMs. Mit LXC und AuFS können Sie den Großteil der 1 GB teilen, und wenn Sie über 1000 Container verfügen, haben Sie möglicherweise immer noch etwas mehr als 1 GB Speicherplatz für das Container-Betriebssystem, vorausgesetzt, sie haben alle dasselbe Betriebssystem-Image.