Update3: 06.2019
Einige Kommentare besagen, dass die Antwort nicht klar ist, ich werde versuchen zu klären.
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- Containern unter Windows simulieren. Unter der Haube wird jedoch eine Linux-VM erstellt, sodass weiterhin Linux-Container unter Linux und Windows-Container unter Windows ausgeführt werden .
Bonus: Lesen Sie diesen sehr schönen Artikel über das Ausführen von Linux-Docker-Containern unter Windows.
F: Was soll ich mit einer .Net Framework 462-App tun, wenn ich in einem Container ausgeführt werden möchte?
A: Es kommt darauf an. Folgende mehrere Empfehlungen:
- Wenn es möglich ist, wechseln Sie zu .Net Core. Da .Net Core die meisten wichtigen Funktionen von .Net Framework unterstützt und .Net Framework 4.8 die letzte Version von .Net Framework sein wird
Wenn Sie nicht auf .Net Core migrieren können - wie bei @Sebastian erwähnt - können Sie Ihre Bibliotheken in .Net Standard konvertieren und haben zwei Versionen der App - eine auf .Net Framework 4.6.2 und eine auf .Net Core - dies ist nicht der Fall Visual Studio unterstützt es immer 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 und unterstützen Plattformen wie Kubernetes besser. Um jedoch .NET Framework-Code ausführen zu können, müssen Sie weiterhin das Basis-Image von "Server Core" ausführen, das etwa 1,4 GB belegt. In den gleichen seltenen Fällen können Sie Ihren Code auf .Net Core migrieren, aber dennoch auf Windows Nano-Servern mit einer Image-Größe von 95 MB ausführen.
Lassen Sie auch die alten Updates für die Geschichte
Update2: 08.2018
Wenn Sie Docker-for-Windows verwenden, können Sie jetzt sowohl Windows- als auch Linux-Container gleichzeitig ausführen: https://blogs.msdn.microsoft.com/premier_developer/2018/04/20/running-docker-windows- und-Linux-Container-gleichzeitig /
Bonus: Nicht direkt mit der Frage verbunden, aber Sie können jetzt nicht nur den Linux-Container selbst ausführen, sondern auch Orchestrator wie kubernetes: https://blog.docker.com/2018/07/kubernetes-is-now-available-in -docker-desktop-stabile-kanal /
Aktualisiert um 2018:
Die ursprüngliche Antwort im Allgemeinen ist richtig, ABER vor einigen Monaten hat Docker das experimentelle Feature LCOW ( offizielles Github-Repository ) hinzugefügt .
Aus diesem Beitrag :
Läuft Docker für Windows nicht bereits Linux-Container? Das stimmt. Docker für Windows kann Linux- oder Windows-Container ausführen und Linux-Container über eine Hyper-V Moby Linux-VM unterstützen (ab Docker für Windows 17.10 basiert diese VM auf LinuxKit).
Das Setup zum Ausführen von Linux-Containern mit LCOW ist viel einfacher als die vorherige Architektur, in der auf einer Hyper-V-Linux-VM ein Linux Docker-Daemon zusammen mit all Ihren Containern ausgeführt wird. Mit LCOW wird der Docker-Dämon als Windows-Prozess ausgeführt (wie beim Ausführen von Docker-Windows-Containern). Jedes Mal, wenn Sie einen Linux-Container starten, startet Docker einen minimalen Hyper-V-Hypervisor, auf dem eine VM mit einem Linux-Kernel, runc und den Containerprozessen ausgeführt wird oben laufen.
Da es nur einen Docker-Daemon gibt und dieser Daemon jetzt unter Windows ausgeführt wird, können Windows- und Linux-Docker-Container bald nebeneinander im selben Netzwerk-Namespace ausgeführt werden . Dadurch werden viele aufregende Entwicklungs- und Produktionsszenarien für Docker-Benutzer unter Windows freigeschaltet.
Original:
Wie in den Kommentaren von @PanagiotisKanavos erwähnt, sind Container nicht für die Virtualisierung vorgesehen und verwenden die Ressourcen des Hostcomputers . Daher kann der Windows-Container derzeit nicht "wie besehen" auf einem Linux-Computer ausgeführt werden.
Aber - Sie können es mit VM tun - wie es unter Windows funktioniert. Sie können Windows VM auf Ihrem Linux-Host installieren, um Windows-Container ausführen zu können.
Damit wird es meiner Meinung nach nicht die beste Idee sein, es auf diese Weise in einer PROD-Umgebung auszuführen.
Auch diese Antwort liefert weitere Details.