Aktualizacja 3: 06.2019
Niektóre komentarze mówią, że odpowiedź nie jest jasna, postaram się wyjaśnić.
TL; DR:
P: Czy kontenery z systemem Windows mogą działać w systemie Linux?
Odp .: Nie. Nie mogą.
Kontenery używają podstawowych zasobów i sterowników systemu operacyjnego, więc kontenery Windows mogą działać tylko w systemie Windows, a kontenery Linux mogą działać tylko w systemie Linux.
P: Ale co z Dockerem dla Windows? A może inne rozwiązania oparte na maszynach wirtualnych?
Odp .: Docker dla systemu Windows umożliwia symulację działania kontenerów Linux w systemie Windows , ale pod maską tworzona jest maszyna wirtualna z systemem Linux, więc nadal kontenery Linux działają w systemie Linux, a kontenery Windows działają w systemie Windows .
Bonus: przeczytaj ten bardzo fajny artykuł na temat uruchamiania kontenerów dokerów Linux w systemie Windows.
P: Więc co powinienem zrobić z aplikacją .Net Framework 462, jeśli chciałbym uruchomić w kontenerze?
Odp .: To zależy. Po kilku zaleceniach:
- Jeśli to możliwe - przejdź do .Net Core. Ponieważ .Net Core zapewnia obsługę większości głównych funkcji .Net Framework, a .Net Framework 4.8 będzie ostatnią wersją .NET Framework
Jeśli nie możesz przeprowadzić migracji do .Net Core - jak wspomniano w @Sebastian - możesz przekonwertować biblioteki na .Net Standard i mieć 2 wersje aplikacji - jedną w .Net Framework 4.6.2, a drugą w .Net Core - nie jest to zawsze oczywiste, Visual Studio obsługuje go całkiem dobrze (z wieloma celowaniem), ale niektóre zależności mogą wymagać dodatkowej opieki.
(Mniej zalecane) W niektórych przypadkach możesz uruchamiać kontenery Windows. Kontenery Windows stają się coraz bardziej dojrzałe, z lepszą obsługą na platformach takich jak Kubernetes. Ale aby móc uruchomić kod .Net Framework, nadal musisz uruchomić na podstawowym obrazie „Server Core”, który zajmuje około 1,4 GB. W tych samych rzadkich przypadkach możesz migrować kod do .Net Core, ale nadal działać na serwerach Windows Nano o rozmiarze obrazu 95 MB.
Pozostawiając również stare aktualizacje historii
Aktualizacja 2: 08.2018
Jeśli korzystasz z Docker-for-Windows, możesz teraz uruchamiać jednocześnie kontenery Windows i Linux: https://blogs.msdn.microsoft.com/premier_developer/2018/04/20/running-docker-windows- i-kontenery-linux-jednocześnie /
Bonus: Nie jest bezpośrednio związany z pytaniem, ale możesz teraz uruchomić nie tylko sam kontener linux, ale także programistę, takiego jak kubernetes: https://blog.docker.com/2018/07/kubernetes-is-now-available-in -docker-desktop-stable-channel /
Zaktualizowano w 2018 r .:
Oryginalna odpowiedź jest poprawna, ALE kilka miesięcy temu doker dodał eksperymentalną funkcję LCOW ( oficjalne repozytorium github ).
Z tego postu :
Czy Docker dla Windows nie obsługuje już kontenerów Linux? Zgadza się. Docker dla systemu Windows może uruchamiać kontenery Linux lub Windows z obsługą kontenerów Linux za pośrednictwem maszyny Wirtualnej Moby Linux Hyper-V (od Docker dla Windows 17.10 ta maszyna wirtualna jest oparta na LinuxKit).
Konfiguracja do uruchamiania kontenerów Linux z LCOW jest o wiele prostsza niż w poprzedniej architekturze, w której VM VM Hyper-V uruchamia demona Linux Docker wraz ze wszystkimi twoimi kontenerami. W przypadku LCOW demon Docker działa jako proces systemu Windows (tak samo jak podczas uruchamiania kontenerów Docker Windows) i za każdym razem, gdy uruchamiasz kontener Linux Docker uruchamia minimalny hypervisor Hyper-V z maszyną wirtualną z jądrem Linux, runc i procesami kontenerowymi działa na górze.
Ponieważ istnieje tylko jeden demon Docker i ponieważ ten demon działa teraz w systemie Windows, wkrótce będzie można uruchomić kontenery Windows i Linux Docker obok siebie, w tej samej sieciowej przestrzeni nazw . Pozwoli to odblokować wiele ekscytujących scenariuszy rozwoju i produkcji dla użytkowników Docker w systemie Windows.
Oryginalny:
Jak wspomniano w komentarzach @PanagiotisKanavos, kontenery nie są przeznaczone do wirtualizacji i wykorzystują zasoby komputera hosta . W rezultacie, na razie kontener Windows nie może działać "tak jak jest" na komputerze z systemem Linux.
Ale - możesz to zrobić za pomocą maszyny wirtualnej - ponieważ działa w systemie Windows. Możesz zainstalować Windows VM na swoim hoście Linux, co pozwoli na uruchamianie kontenerów Windows.
Dzięki niemu IMHO uruchomione w ten sposób na środowisku PROD nie będzie najlepszym pomysłem.
Również ta odpowiedź zawiera więcej szczegółów.