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?


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.


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!


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
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.