TL;DR:
F: Können Windows-Container unter Linux ausgeführt werden?
A: Nein. Sie können nicht.
Container verwenden die zugrunde liegenden Betriebssystemressourcen und -treiber, sodass Windows-Container nur unter Windows und Linux-Container nur unter Linux ausgeführt werden können.
F: Aber was ist mit Docker für Windows? Oder andere VM-basierte Lösungen?
A: Mit Docker für Windows können Sie das Ausführen von Linux simulieren Container auf Windows , aber unter der Haube wird eine Linux-VM erstellt, sodass immer noch Linux-Container unter Linux und Windows-Container unter Windows ausgeführt werden .
Bonus:Lesen Sie diesen sehr netten Artikel über das Ausführen von Linux-Docker-Containern unter Windows.
F: Was soll ich also mit einer .NET Framework 462-Anwendung tun, wenn ich sie in einem Container ausführen möchte?
A: Es hängt davon ab, ob. Beachten Sie die folgenden Empfehlungen:
-
Wechseln Sie nach Möglichkeit zu .NET Core. Da .NET Core die meisten Hauptfunktionen von .NET Framework unterstützt und .NET Framework 4.8 die letzte Version von .NET Framework sein wird
-
Wenn Sie nicht zu .NET Core migrieren können – wie von @Sebastian erwähnt – können Sie Ihre Bibliotheken in .NET Standard konvertieren und haben zwei Versionen der Anwendung – eine auf .NET Framework 4.6.2 und eine auf .NET Core – das ist es nicht immer offensichtlich. Visual Studio unterstützt es ziemlich gut (mit Multi-Targeting), aber einige Abhängigkeiten können besondere Sorgfalt erfordern.
-
(Weniger empfohlen) In einigen Fällen können Sie Windows-Container ausführen. Windows-Container werden immer ausgereifter, mit besserer Unterstützung in Plattformen wie Kubernetes. Aber um .NET Framework-Code ausführen zu können, müssen Sie immer noch auf dem Basis-Image von „Server Core“ laufen, das etwa 1,4 GB belegt. In denselben seltenen Fällen können Sie Ihren Code zu .NET Core migrieren, aber weiterhin auf Windows Nano Server mit einer Image-Größe von 95 MB ausführen.
Lassen Sie auch die alten Updates für den Verlauf
Aktualisierung 2:08.2018
Wenn Sie Docker-für-Windows verwenden, können Sie jetzt sowohl Windows- als auch Linux-Container gleichzeitig ausführen :Gleichzeitiges Ausführen von Docker Windows- und Linux-Containern
Bonus: Nicht direkt mit der Frage verbunden, aber Sie können jetzt nicht nur den Linux-Container selbst ausführen, sondern auch einen Orchestrator wie Kubernetes:Kubernetes is Now Available In Docker Desktop Stable Channel
Aktualisiert 2018:
Die ursprüngliche Antwort ist im Allgemeinen richtig, ABER Vor einigen Monaten hat Docker das experimentelle Feature LCOW (offizielles GitHub-Repository) hinzugefügt.
Aus diesem Beitrag:
Führt Docker für Windows nicht bereits Linux-Container aus? Das ist richtig. Docker für Windows kann Linux- oder Windows-Container ausführen, mit Unterstützung für Linux-Container über eine Hyper-V Moby Linux-VM (ab Docker für Windows 17.10 basiert diese VM auf LinuxKit).
Die Einrichtung zum Ausführen von Linux-Containern mit LCOW ist viel einfacher als die vorherige Architektur wo eine Hyper-V-Linux-VM einen Linux-Dockerdaemon zusammen mit all Ihren Containern ausführt. Mit LCOW wird der Docker-Daemon als Windows-Prozess ausgeführt (wie beim Ausführen von Docker-Windows-Containern), und jedes Mal, wenn Sie einen Linux-Container starten, startet Docker einen minimalen Hyper-V-Hypervisor, auf dem eine VM mit einem Linuxkernel, runc und den darauf laufenden Containerprozessen ausgeführt wird.
Da es nur einen Docker-Daemon gibt und dieser Daemon jetzt unter Windows läuft, wird es bald möglich sein, Windows- und Linux-Docker-Container nebeneinander im selben Netzwerk-Namespace auszuführen . Dadurch werden viele aufregende Entwicklungs- und Produktionsszenarien für Docker-Benutzer unter Windows freigeschaltet.
Original:
Wie in Kommentaren von @PanagiotisKanavos erwähnt, dienen Container nicht der Virtualisierung und verwenden die Ressourcen des Hostcomputers . Daher kann ein Windows-Container vorerst nicht "wie er ist" auf einem Linux-Rechner ausgeführt werden.
Aber - Sie können dies mit VM tun - wie es unter Windows funktioniert. Sie können eine Windows-VM auf Ihrem Linux-Host installieren, die es ermöglicht, Windows-Container auszuführen.
Damit läuft es IMHO so in einer Produktion Umwelt wird nicht die beste Idee sein.
Außerdem enthält diese Antwort weitere Details.
Nein, Sie können Windows-Container nicht direkt unter Linux ausführen.
Aber Sie können Linux unter Windows ausführen.
Windows Server 2016 wird mit einem Basis-Image des Ubuntu-Betriebssystems geliefert (nach dem Beta-Service Pack vom September 2016 ). Aus diesem Grund können Sie Linux unter Windows ausführen und nicht anders. Sehen Sie hier nach. Endlich könnten Linux-Container mit dem LinuxKit von Docker unter Windows ausgeführt werden
Sie können zwischen den Betriebssystemcontainern Linux und Windows wechseln, indem Sie im Tray-Menü mit der rechten Maustaste auf Docker klicken.