Update3: 06.2019
Certains commentaires disent que la réponse n'est pas claire, je vais essayer de clarifier.
TL; DR:
Q: Les conteneurs Windows peuvent-ils fonctionner sous Linux?
R: Non. Ils ne peuvent pas.
Les conteneurs utilisent les ressources et les pilotes du système d'exploitation sous-jacent, de sorte que les conteneurs Windows peuvent s'exécuter uniquement sur Windows et les conteneurs Linux peuvent s'exécuter uniquement sur Linux.
Q: Mais qu'en est-il de Docker pour Windows? Ou d'autres solutions basées sur VM?
R: Docker pour Windows vous permet de simuler l'exécution de conteneurs Linux sur Windows , mais sous le capot, une machine virtuelle Linux est créée, de sorte que les conteneurs Linux fonctionnent toujours sur Linux et que les conteneurs Windows fonctionnent sur Windows .
Bonus: lisez ce très bel article sur l'exécution de conteneurs Docker Linux sur Windows.
Q: Alors, que dois-je faire avec une application .Net Framework 462, si je souhaite exécuter dans un conteneur?
R: Cela dépend. Suite à plusieurs recommandations:
- Si c'est possible - passez à .Net Core. Étant donné que .Net Core prend en charge la plupart des principales fonctionnalités de .Net Framework, et .Net Framework 4.8 sera la dernière version de .Net Framework
Si vous ne pouvez pas migrer vers .Net Core - Comme @Sebastian l'a mentionné - vous pouvez convertir vos bibliothèques en .Net Standard et avoir 2 versions d'application - une sur .Net Framework 4.6.2 et une sur .Net Core - ce n'est pas toujours évident, Visual Studio le supporte assez bien (avec multi-ciblage), mais certaines dépendances peuvent nécessiter des précautions supplémentaires.
(Moins recommandé) Dans certains cas, vous pouvez exécuter des conteneurs Windows. Les conteneurs Windows deviennent de plus en plus matures, avec une meilleure prise en charge dans des plateformes comme Kubernetes. Mais pour pouvoir exécuter le code .Net Framework, vous devez toujours exécuter l'image de base de "Server Core", qui occupe environ 1,4 Go. Dans les mêmes cas rares, vous pouvez migrer votre code vers .Net Core, mais toujours exécuter sur des serveurs Windows Nano, avec une taille d'image de 95 Mo.
Laissant également les anciennes mises à jour pour l'histoire
Update2: 08.2018
Si vous utilisez Docker-for-Windows, vous pouvez maintenant exécuter simultanément les conteneurs Windows et Linux: https://blogs.msdn.microsoft.com/premier_developer/2018/04/20/running-docker-windows- et-linux-containers-simultanément /
Bonus: pas directement lié à la question, mais vous pouvez désormais exécuter non seulement le conteneur Linux lui-même, mais aussi un orchestrateur comme kubernetes: https://blog.docker.com/2018/07/kubernetes-is-now-available-in -docker-desktop-stable-channel /
Mis à jour en 2018:
La réponse originale en général est juste, MAIS il y a plusieurs mois, Docker a ajouté la fonctionnalité expérimentale LCOW ( dépôt github officiel ).
De ce post :
Docker pour Windows n'exécute-t-il pas déjà des conteneurs Linux? C'est vrai. Docker pour Windows peut exécuter des conteneurs Linux ou Windows, avec prise en charge des conteneurs Linux via une machine virtuelle Hyper-V Moby Linux (à partir de Docker pour Windows 17.10, cette machine virtuelle est basée sur LinuxKit).
La configuration pour exécuter des conteneurs Linux avec LCOW est beaucoup plus simple que l'architecture précédente où une machine virtuelle Hyper-V Linux exécute un démon Linux Docker, avec tous vos conteneurs. Avec LCOW, le démon Docker s'exécute comme un processus Windows (comme lors de l'exécution de conteneurs Docker Windows), et chaque fois que vous démarrez un conteneur Linux, Docker lance un hyperviseur Hyper-V minimal exécutant une machine virtuelle avec un noyau Linux, runc et les processus de conteneur courir sur le dessus.
Parce qu'il n'y a qu'un seul démon Docker, et parce que ce démon s'exécute maintenant sous Windows, il sera bientôt possible d'exécuter côte à côte les conteneurs Windows et Linux Docker, dans le même espace de nom réseau . Cela débloquera de nombreux scénarios de développement et de production passionnants pour les utilisateurs Docker sous Windows.
Original:
Comme mentionné dans les commentaires de @PanagiotisKanavos, les conteneurs ne sont pas destinés à la virtualisation et utilisent les ressources de la machine hôte . Par conséquent, pour l'instant, le conteneur Windows ne peut pas fonctionner "tel quel" sur une machine Linux.
Mais - vous pouvez le faire en utilisant VM - car cela fonctionne sur Windows. Vous pouvez installer Windows VM sur votre hôte Linux, ce qui permettra d'exécuter des conteneurs Windows.
Avec elle, IMHO l'exécuter de cette façon sur l'environnement PROD ne sera pas la meilleure idée.
En outre, cette réponse fournit plus de détails.