Welche Beziehung besteht zwischen dem Docker-Host-Betriebssystem und dem Container-Basis-Image-Betriebssystem?


122

Ich bin mir nicht sicher, ob ich die richtige Frage stelle ... aber während ich alles Docker gelesen habe, was ich in die Hände bekommen kann, sehe ich, dass ich Docker unter Ubuntu 12.04 (zum Beispiel) installieren und dann installieren kann ein Fedora-Container oder eine andere Version von Ubuntu? (Es gibt ein Beispiel, in dem der Benutzer die Busybox im Container installiert hat.)

Und natürlich könnte ich mich völlig irren.

Aber ich würde erwarten, dass es eine kurzlebige Verbindung zwischen dem Basissystem und dem Container gibt.

angepasst: Wie ist die Beziehung zwischen dem Host-Betriebssystem und dem Betriebssystem des Container-Basis-Images?

Antworten:


100

Wie von BraveNewCurrency erwähnt, ist die einzige Beziehung zwischen dem Host-Betriebssystem und dem Container der Kernel.

Dies ist einer der Hauptunterschiede zwischen Docker- und "normalen" virtuellen Maschinen. Es gibt keinen Overhead. Alles findet direkt im Kernel des Hosts statt.

Aus diesem Grund können Sie nur Linux-basierte Distributionen / Binärdateien im Container ausführen. Wenn Sie etwas anderes ausführen möchten, ist dies nicht unmöglich, aber Sie benötigen eine Art Virtualisierung innerhalb des Containers (qemu, kvm usw.).

Docker verwaltet Bilder, die die Dateisystemdarstellung darstellen. Sie können jede Linux-Distribution installieren oder einfach Binärdateien einfügen.

Zur Vereinfachung des Beispiels verlassen wir uns häufig auf die Basisimages, aber Sie können Ihr Image auch ohne eine der Verteilungsbibliotheken / Binärdateien erstellen. Auf diese Weise hätten Sie einen wirklich winzigen und dennoch funktionalen Behälter.

Noch ein Punkt zu den Distributionen: Da der Kernel immer noch der Kernel des Hosts ist, werden von der Distribution keine spezifischen Kernelmodule / Patches bereitgestellt.


2
Wenn das Host-Betriebssystem Ubuntu ist, wird der Container dann auch Ubuntu sein?
Richard

21
Der Kernel des Containers wird der von Ubuntu sein, aber nichts weiter. Sie können Centos, Archlinux, Debian oder jede andere Linux-basierte Distribution problemlos als Container ausführen.
Knarren

37
Obwohl diese Informationen direkt / indirekt auf der Docker-Website angegeben werden können, sollten sie dies meiner Meinung nach etwas klarer machen. Ich hatte mich durch die Homepage, die Übersicht, das interaktive Tutorial und die meisten grundlegenden Tuts gearbeitet. Trotzdem war ich in diesem Thema verwirrt und begann anzunehmen, dass die beste Leistung von Docker (basierend auf den Architekturdiagrammen der Site) eine Übereinstimmung auf dem Host- und Container-Betriebssystem erfordern würde. Ich bin neu im Konzept des "Linux-Kernels", daher war mir dies nicht sofort klar. Wenn man das sofort weiß, ist Docker doppelt so schlecht.
Ctrlplusb

2
Docker ist ein ziemlich komplexes Projekt, das erweiterte Funktionen nutzt. Wir gehen davon aus, dass der Benutzer irgendwann über Kenntnisse wie den Unterschied zwischen Betriebssystem und Distribution verfügt. Wenn Sie der Meinung sind, dass dies einen Mehrwert darstellt, ist die Dokumentation Open Source und Sie können eine Pull-Anfrage senden.
Knarren

3
Dies scheint darauf hinzudeuten, dass nur die User-Space-Teile eines Betriebssystems (Bibliotheken, Befehle, Anwendungen) containerisiert werden können. Wenn die Anwendung eine andere Kernel-Revision erfordert (z. B. 3.10 vs. 4.9), kann sie möglicherweise nicht in einem Container ausgeführt werden. Ist das richtig?
David C.

23

Das einzige, was sie gemeinsam haben, ist buchstäblich der Kernel. Ihre ganze Welt (Dateisystem) befindet sich im Docker-Container.


1

Es gibt noch eine weitere Überlegung: Selbst wenn beide Kernel identisch sind, gibt es ein Problem, wenn das Host-Betriebssystem Docker nicht unterstützt, wie RHEL 6: https://access.redhat.com/solutions/1378023

Sie können also keinen Container auf RHEL 6 hochfahren, selbst wenn es sich um ein Linux-Image handelt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.