Docker-Container haben Ihren eigenen kernel oder nicht?

Ich sehe, dass viele Docker-Images im Docker-Repository mit einer Ubuntu-Basis erstellt werden.

Was bedeutet das? Hat jeder Container eine abgespeckte Version des Linux-Kernels?

Sitzen Container auf ihren eigenen Kerneln? Aber ich dachte, Container teilen sich den Kernel des Hosts (was in einigen Fällen boot2docker ist, ein benutzerdefinierter winziger Linux-Core-Build und in anderen Fällen so etwas wie CoreOS).

EDIT: Klärung der Frage ein bisschen. Ja Ich weiß, dass Docker ein Prozesscontainer ist, keine vollständige VM. Aber da es "Ubuntu" - Container in der offiziellen Docker Hub-Registrierung und anderen Betriebssystemen wie CentOS gibt, was bedeutet es, Ubuntu in einem Container auszuführen?

Antwort: Ahh es dämmerte mir gerade. Es ist die Ubuntu User Land-Prozesse, apt-get und andere Konfigurationsprozesse für einen bestimmten Ubuntu Build enthält. Ebenso für CentOS. Docker ist kein einzelner Prozess, nur ein einzelner Eintrag. Also für diese Verteilungen der Einstiegspunkt ist eine Art Init-Prozess, der andere Prozesse hervorbringt.

 78
Author: hippietrail, 2015-03-14

3 answers

Docker verwendet Host OS Kernel, es gibt keinen benutzerdefinierten oder zusätzlichen Kernel im Container. Alle Container, die auf einem Computer ausgeführt werden, teilen diesen "Host" - Kernel.

Wikipedia sagt http://en.wikipedia.org/wiki/Docker_ (software) dass

Docker verwendet Ressourcenisolierungsfunktionen des Linux-Kernels wie Cgroups und Kernel-Namespaces, damit unabhängige "Container" innerhalb einer einzelnen Linux-Instanz ausgeführt werden können, wodurch der Overhead des Starts von Virtual vermieden wird Maschine.

Cgroups, Namespaces und LXC sind Funktionen des Linux-Kernels, um Gruppen von Prozessen zu isolieren; Es gibt immer noch einen einzelnen Kernel, einen einzelnen Scheduler und eine Instanz des Kernel Memory Managers.

Boot2docker und CoreOS sind nur leichte Linux-Distributionen mit einem Host-Kernel; Sie können zum Laden von Docker-Containern verwendet werden.

Http://boot2docker.io/

Boot2docker ist eine leichte Linux-Distribution, die auf Tiny Core Linux basiert. speziell zum ausführen von Docker-Containern. Es läuft vollständig aus dem RAM, wiegt ~27 MB und bootet in ~5s (YMMV).

Http://en.wikipedia.org/wiki/CoreOS

Ein einzelner Control-Host (CoreOS-Instanz) führt mehrere isolierte Linux-Systeme (Container) aus und verwendet Docker als zusätzliche Abstraktionsschicht und Schnittstelle[14] zu den zugrunde liegenden Virtualisierungsfunktionen auf Betriebssystemebene des Linux-Kernels. ... Dieser Ansatz basiert auf den Cgroups des Linux-Kernels funktionalität, die Namespace-Isolation und die Fähigkeit bietet, die Ressourcennutzung (CPU, Speicher, Festplatten-E/A usw.) zu begrenzen, zu berücksichtigen und zu isolieren.) für die Sammlung von Prozessen.

 45
Author: osgx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-01-12 22:46:48

In fast allen Fällen wird der Host-Betriebssystemkern gemeinsam genutzt. Um einen anderen Kernel auszuführen, müssen Sie Virtualisierung verwenden. Dies ist selten und wird aufgrund von Leistungseinbußen nur bei Bedarf verwendet.

" Der Docker Engine-Container umfasst nur die Anwendung und ihre Abhängigkeiten. Es wird als isolierter Prozess im Benutzerbereich auf dem Hostbetriebssystem ausgeführt und teilt den Kernel mit anderen Containern. Daher genießt es die Vorteile der Ressourcenisolierung und-zuweisung von VMs, ist aber viel portabler und effizient."

Dies könnte helfen zu erklären, wie es funktioniert: geben Sie hier die Bildbeschreibung ein

Quelle: https://www.docker.com/whatisdocker/

 22
Author: JeremiahBarrar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-11-29 14:50:57

Alle docker-Container verwenden, den host-kernel.

Es würde auch bedeuten, dass eine gewisse Inkompatibilität zwischen einem Host-Kernel und der Container-Distribution Probleme verursachen könnte. Theoretisch. Wenn beispielsweise eine containerisierte Software eine Kernelfunktion verwenden möchte, die nicht in den Hostkern kompiliert wurde, funktioniert sie nicht.

Die Praxis ist, dass dies nicht geschieht. Die Hauptproblemquelle der Docker-Container sind die (oft unerklärlichen) Einschränkungen von der Docker selbst und nicht irgendeine Host-Gast-Kernel-Inkompatibilität.

(PS Es ist, weil praktisch alle Linux-Distributionen mit jedem Linux-Kernel arbeiten.)

 3
Author: peterh - Reinstate Monica,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-01-08 14:12:21