331 votes

Les conteneurs Windows peuvent-ils être hébergés sur Linux ?

Est-il possible d'exécuter des conteneurs Windows sous Linux ? Le scénario se base sur une application écrite dans le langage .NET (old net) et le Utilisateur de Linux qui veut exécuter cela avec Docker pour fournir une net462 écrite sur l'API localhost .

J'utilise la version bêta de Docker Desktop pour Windows .

Si non, alors pourquoi Windows peut faire tourner des conteneurs Linux et pas l'inverse ?


Le temps a passé et cette question est populaire. J'aimerais ajouter que la solution de rechange consiste à utiliser le nouveau standard net. Cela m'a permis d'emballer 4.6.2 dans une nouvelle bibliothèque.

4 votes

Impossible - Pour construire et exécuter des conteneurs Windows, il faut un système Windows prenant en charge les conteneurs.

6 votes

Ok, mais pourquoi alors Windows peut faire tourner des conteneurs linux ? Il n'y a pas de vice-versa pour le moment ?

1 votes

Pas de vice-versa pour aucun système d'exploitation pour toujours. Les conteneurs sont PAS de mécanismes complets de virtualisation . Si vous voulez éviter de réécrire votre application, vous devrez l'exécuter sur une VM avec un invité Windows. Ou réécrire l'application en .NET Core.

246voto

evgenyl Points 2654

TL;DR :

Q : Les conteneurs Windows peuvent-ils fonctionner sous Linux ?

A : Non. Ils ne peuvent pas.

Les conteneurs utilisent les ressources et les pilotes du système d'exploitation sous-jacent. Ainsi, les conteneurs Windows ne peuvent fonctionner que sous Windows, et les conteneurs Linux ne peuvent fonctionner que sous Linux.

Q : Mais qu'en est-il de Docker pour Windows ? Ou d'autres solutions basées sur les VM ?

A : Docker pour Windows vous permet de simuler le fonctionnement Linux les conteneurs sur Windows mais sous le capot une VM Linux est créée, donc toujours Les conteneurs Linux fonctionnent sous Linux, et les conteneurs Windows fonctionnent sous Windows. .

Bonus : Lire 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 l'exécuter dans un conteneur ?

A : Cela dépend. En suivant plusieurs recommandations :

  • Si cela 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 format Norme .NET Si l'on a besoin d'une version de l'application, et que l'on dispose de deux versions de l'application - une sur .NET Framework 4.6.2, et une sur .NET Core - ce n'est pas toujours évident. Visual Studio le prend assez bien en charge (avec le ciblage multiple), mais certaines dépendances peuvent nécessiter une attention particulière.

  • (Moins recommandé) Dans certains cas, vous pouvez exécuter des conteneurs Windows. Les conteneurs Windows deviennent de plus en plus matures, avec un meilleur support dans des plateformes telles que Kubernetes . Mais pour pouvoir exécuter le code .NET Framework, vous devez toujours utiliser l'image de base de "Server Core", qui occupe environ 1,4 Go. Dans de rares cas, vous pouvez migrer votre code vers .NET Core, mais toujours l'exécuter sur une image de base de Serveur Windows Nano avec une taille d'image de 95 MB.

En laissant aussi les anciennes mises à jour pour l'histoire

Mise à jour 2 : 08.2018

Si vous utilisez Docker-for-Windows, vous pouvez maintenant exécuter les conteneurs Windows et Linux. simultanément : _Exécution simultanée de conteneurs Docker Windows et Linux_

Bonus : Ce n'est pas directement lié à la question, mais vous pouvez désormais faire fonctionner non seulement le conteneur Linux lui-même, mais aussi un orchestrateur comme Kubernetes : Kubernetes est maintenant disponible dans le canal stable de Docker Desktop

Mis à jour en 2018 :

La réponse originale en général est juste, MAIS Il y a plusieurs mois, Docker a ajouté caractéristique expérimentale LCOW ( Dépôt officiel sur GitHub ).

De ce poste :

Docker pour Windows ne fait-il pas déjà fonctionner les conteneurs Linux ? C'est exact. Docker pour Windows peut exécuter des conteneurs Linux ou Windows. Linux via une VM Hyper-V Moby Linux (à partir de Docker pour Windows). Windows 17.10, cette VM est basée sur LinuxKit).

La configuration pour faire fonctionner des conteneurs Linux avec LCOW est beaucoup plus simple que celle qui est décrite ci-dessous. l'architecture précédente où une VM Linux Hyper-V exécute un Docker Linux ainsi que tous vos conteneurs. Avec LCOW, le démon Docker s'exécute en tant que processus Windows (comme pour l'exécution de Docker Windows). ), et chaque fois que vous démarrez un conteneur Linux, Docker lance un hyperviseur Hyper-V minimal qui exécute une VM avec un noyau Linux, runc et thomson. runc et les processus de conteneur s'exécutant par-dessus.

Parce qu'il n'y a qu'un seul démon Docker, et parce que ce démon maintenant fonctionne sous Windows, je l sera bientôt possible de faire fonctionner Windows et Linux Docker côte à côte, dans le même espace de noms de réseau. . Ce site permettra de débloquer de nombreux scénarios de développement et de production passionnants pour les utilisateurs de Docker sous Windows.

Original :

Comme mentionné dans les commentaires de @PanagiotisKanavos, les conteneurs ne sont pas destinés à la virtualisation, et ils utilisent les ressources de la machine hôte . Par conséquent, pour l'instant, un conteneur Windows ne peut pas fonctionner "tel quel" sur une machine Linux.

Mais - vous pouvez le faire en utilisant VM - comme cela fonctionne sous Windows. Vous pouvez installer Windows VM sur votre hôte Linux, ce qui permettra d'exécuter des conteneurs Windows.

Avec cela, IMHO l'exécuter de cette façon dans un production environnement ne sera pas la meilleure idée.

También, cette réponse fournit plus de détails.

12 votes

La réponse liée ne fournit pas vraiment de détails à ce sujet - elle explique simplement comment exécuter des conteneurs Linux sur Windows (l'inverse). Il est possible d'exécuter Docker à l'intérieur d'une VM Windows, mais vous avez besoin d'un support de virtualisation imbriqué pour cela. Cela signifie que cela fonctionne avec VMware, mais pas avec Virtualbox.

4 votes

Beaucoup de mots dans la réponse mais elle ne semble pas répondre à la question.

3 votes

Il ne répond pas à la question. Il ne devrait pas être si bien classé

28voto

KARTHI KEYAN Points 1

Non, vous ne pouvez pas exécuter les conteneurs Windows directement sur Linux.

Mais vous pouvez faire tourner Linux sur Windows.

Windows Server 2016 est fourni avec une image de base du système d'exploitation Ubuntu ( après le service pack bêta de septembre 2016 ). C'est la raison pour laquelle vous pouvez faire tourner Linux sur Windows et pas autrement. Regardez ici. Enfin, les conteneurs Linux peuvent fonctionner sous Windows grâce au kit Linux de Docker.

Vous pouvez passer d'un conteneur d'OS à l'autre, Linux et Windows, en faisant un clic droit sur le Docker dans le menu de la barre d'état.

Enter image description here

Enter image description here

31 votes

Le PO cherche à faire fonctionner des conteneurs Windows sur des serveurs Linux, donc celui-ci ne répond pas à la question. Mais je n'aime pas les gens qui donnent des downvote sans commentaire, donc je donne un upvote.

3 votes

@Karthikeyan V : Parce que ce n'est pas une réponse à la question.

0 votes

Je ne suis pas sûr de ce qui a été dit avant, mais la première déclaration dit que vous ne pouvez pas et la seconde que vous pouvez. C'est probablement un manque ou quelque chose qui prête à confusion.

11voto

sunil bhardwaj Points 91

Contrairement à virtualisation La conteneurisation utilise le même système d'exploitation hôte. Ainsi, le conteneur construit sur Linux ne peut pas être exécuté sur Windows et vice versa.

Dans Windows, vous devez vous servir de la virtualisation (en utilisant Hyper-V ) pour avoir le même système d'exploitation que celui de votre conteneur et vous devriez être en mesure de l'exécuter.

Docker for Windows est une application similaire qui s'appuie sur Hyper-V et permet d'exécuter des conteneurs Docker Linux sur Windows. Mais pour autant que je sache, il n'y a rien en tant que tel qui aide à exécuter des conteneurs Windows sur Linux.

7voto

BalintPogatsa Points 97

Vous pouvez utiliser Windows Containers à l'intérieur d'une machine virtuelle (l'OS invité doit correspondre aux exigences - Windows 10 Pro ou Windows Server 2016 ).

Par exemple, vous pouvez utiliser VirtualBox . Il suffit d'activer Hyper-V à l'intérieur de Système Accélération Interface de paravirtualisation .

Après cela, si Docker ne démarre pas à cause d'une erreur, utilisez l'option "Switch to Windows containers..." dans les paramètres.

1voto

dagelf Points 151

Vous pouvez exécuter SQL Server y .NET Core sur Linux, et donc dans des conteneurs Linux, de nos jours.

Ver: Microsoft SQL Server par Microsoft | Docker Hub

Aussi : .NET Core de Microsoft | Docker Hub

La réponse directe à votre question est bien sûr, à moins qu'il existe une version compilée spécialement pour Linux, non.

4 votes

C'est vrai - mais cela n'a rien à voir avec la question. De plus, MS-SQL est plus qu'un simple moteur (qui, sous Linux, est livré sans filestream ni R, ce qui signifie qu'il ne s'agit même pas du moteur complet).

0 votes

Tu dois penser un peu plus loin... pourquoi demande-t-il ça ? S'il le demande parce qu'il veut en faire une : voilà.

2 votes

Possible. Mais, à mon avis, il pose probablement la question parce qu'il l'a déjà fait et qu'il doit maintenant exécuter des choses comme SSRS/SSAS ou un contrôle de formulaire Web, comme ReportViewer, sous Linux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X