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?
Antworten:
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
docker
Binä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.quelle
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!
quelle