Erlaubt Docker, dass Container betriebssystemunabhängig sind?

9

Wir verwenden derzeit einen Windows-basierten Server, um 2 VMs zu hosten. Eine VM verwendet Windows mit einer Windows-App und die andere VM verwendet Linux mit einer Linux-App.

Ist das folgende Szenario möglich?

Bare Server mit Windows 2016 (keine VMs). Installieren Sie die Docker-Engine. Installieren Sie den Windows-App-Container. Installieren Sie den Linux-App-Container.

Abstrakt die Docker-Engine das Betriebssystem so, dass in dieser Konfiguration beide Apps ausgeführt werden? Bedeutet dies, dass die Docker-Engine als "Interpreter" fungiert, ähnlich wie Java-Code auf verschiedenen Betriebssystemen ausgeführt werden kann?

Nanonerd
quelle
1
Details finden Sie hier . Hauptsächlich benötigen Sie eine Linux-VM, um Linux-Container auszuführen, nur um einen Linux-Kernel bereitzustellen. Docker-Container sind isolierte Prozesse. Sie benötigen also einen Host. Das Linuxkit ist genau das, aber zur Vereinfachung in den Docker-Ausführungsbefehl integriert verwenden.
Tensibai
Sollte das nicht eine Antwort sein?
Dan Cornilescu
2
@ Dan derzeit auf dem Kochgipfel, ich war ein wenig kurz, um eine richtige Antwort zu schreiben :)
Also habe
Sie sind sich nicht sicher, was Ihre Windows-App tut, aber Sie könnten auch in Betracht ziehen, auf dot net core umzusteigen, da es plattformübergreifend ist. Auf diese Weise können Sie alles unter Linux ausführen.
Frennky

Antworten:

7

Abstrakt die Docker-Engine das Betriebssystem so, dass in dieser Konfiguration beide Apps ausgeführt werden?

Nein, tut es nicht. Docker verwendet die Containerisierung als Kerntechnologie, die auf dem Konzept der gemeinsamen Nutzung eines Kernels zwischen Containern beruht . Wenn ein Docker-Image auf einem Windows-Kernel und ein anderes auf einem Linux-Kernel basiert, können Sie diese beiden Images nicht auf demselben Betriebssystem ausführen.

Wenn Sie Linux Docker unter Windows installieren, richten Sie tatsächlich eine Linux-VM in Hyper-V ein. Die LinuxKit-Details finden Sie hier . Sie können die Hyper-V-Konsole öffnen und eine VM mit dem Namen "MobyLinuxVM" anzeigen. Es wird viel Arbeit geleistet, um dies von Ihnen weg zu abstrahieren, z. B. kann die dockerBinärdatei eine Verbindung zur Linux-VM herstellen und dieselben Befehle ausführen, die Sie gewohnt sind. Das Netzwerk zwischen Host und VM versucht nahtlos zu sein, das Mounten von Volumes usw. Letztendlich ist es das Nicht Docker, mit dem Sie ein Linux Docker-Image unter Windows ausführen können, sondern nur eine alte Virtualisierung.

user2640621
quelle
2

Ja, verrückt, Sie können alles ausführen, was Sie wollen, solange der Host die Virtualisierung unterstützt und die Docker-Binärdatei ausführen kann!

Briansbum
quelle
Ich denke immer noch, dass es einige Details gibt, um Windows / Linux-Container auszuführen, oder?
Peter Muryshkin
Ich denke, Sie brauchen auch LinuxKit, aber am Ende haben Sie die gleiche Funktionalität, die unter Linux verfügbar ist
Briansbum