Ich sehe, dass viele Docker-Images im Docker-Repository mit einer Ubuntu-Basis erstellt wurden.
Was bedeutet das? Enthält jeder Container eine abgespeckte Version des Linux-Kernels?
Sitzen Container auf ihren eigenen Kerneln? Aber ich dachte, Container teilen sich den Kernel des Hosts (der in einigen Fällen boot2docker ist, ein angepasster Tiny Core Linux Build, und in anderen so etwas wie CoreOS).
EDIT: Die Frage ein bisschen klären. Ja, ich weiß, Docker ist ein Prozesscontainer, keine vollständige VM. Aber da es "Ubuntu" -Container in der offiziellen Docker-Hub-Registrierung und in anderen Betriebssystemen wie CentOS gibt, was bedeutet es, Ubuntu in einem Container auszuführen?
Antwort: Ahh, es ist mir gerade aufgegangen. Es sind die Ubuntu-Benutzer-Land-Prozesse, die apt-get und andere Konfigurationsprozesse für einen bestimmten Ubuntu-Build enthalten. Ähnliches gilt für CentOS. Docker ist kein einzelner Prozess, nur ein einzelner Eintrag. Für diese Distributionen ist der Einstiegspunkt also eine Art Init-Prozess, der andere Prozesse hervorbringt.
Antworten:
Docker verwendet den Kernel des Host-Betriebssystems. Es gibt keinen benutzerdefinierten oder zusätzlichen Kernel im Container. Alle Container, die auf einer Maschine laufen, teilen sich diesen "Host" -Kernel.
Wikipedia sagt http://en.wikipedia.org/wiki/Docker_(software) das
cgroups, Namespaces und LXC sind Funktionen des Linux-Kernels zum Isolieren von Prozessgruppen. Es gibt immer noch einen einzelnen Kernel, einen einzelnen Scheduler und eine Instanz des Kernel-Speichermanagers.
Boot2docker und CoreOS sind einfache Linux-Distributionen mit einem Host-Kernel. Sie können zum Laden von Docker-Containern verwendet werden.
http://boot2docker.io/
http://en.wikipedia.org/wiki/CoreOS
quelle
FROM
ein Ubuntu-Basis-Image benötigt, wenn der Host bereits Ubuntu ausführt. Um die Frage zu beantworten, müssen Sie erklären, was ein Basisimage ist.In fast allen Fällen wird der Kernel des Host-Betriebssystems gemeinsam genutzt. Um einen anderen Kernel auszuführen, müssen Sie Virtualisierung verwenden. Dies ist selten und wird nur bei Bedarf aufgrund von Leistungseinbußen verwendet.
"Der Docker Engine-Container besteht nur aus der Anwendung und ihren Abhängigkeiten. Er wird als isolierter Prozess im Benutzerbereich auf dem Host-Betriebssystem ausgeführt und teilt den Kernel mit anderen Containern. Auf diese Weise profitiert er von den Vorteilen der Ressourcenisolierung und -zuweisung von VMs, ist aber noch viel mehr portabel und effizient. "
Dies könnte helfen zu erklären, wie es funktioniert:
Quelle: https://www.docker.com/whatisdocker/
quelle