Lorsque Microsoft et Docker ont annoncé pour la première fois que la prochaine version de Windows Server prendrait en charge la technologie de conteneurisation de plus en plus répandue, il n’y avait pas beaucoup de détails techniques sur ce qu’il faudrait faire pour que cela fonctionne, des questions ont été posées sur la nature réelle de Docker..

"Le moteur Docker pour Windows Server aura une parité des fonctionnalités efficace avec le côté Linux", a déclaré David Messsina, vice-président de Docker. "Il n'y aura aucune différence dans l'utilisation d'un conteneur, autre que le système d'exploitation à l'intérieur du conteneur. Les API et tout le reste sur lequel les développeurs d'applications doivent s'appuyer seront les mêmes."

Mais sous Linux, le moteur Docker (qui exécute les conteneurs et est distinct du client Docker que vous utilisez pour les gérer) utilise les fonctionnalités du noyau telles que les espaces de noms et les groupes C. Windows Server aura-t-il cela, ainsi qu’un registre, un hébergement de services et des listes de contrôle d’accès pour chaque conteneur??

"Nous ferons tout cela", a confirmé Mark Russinovich, CTO Azure à TechRadar Pro de TechEd Europe, "il n'y aurait pas grand intérêt à le faire si nous ne le faisons pas." La question la plus intéressante est de savoir comment cela s’intègre dans le modèle d’application Windows Server et comment il peut tirer parti de certains types de virtualisation déjà mis en place par Microsoft dans son système d’exploitation pour des raisons de compatibilité ascendante..

Une approche différente

Les conteneurs Docker ont une approche très différente de celle consistant à placer un système d'exploitation complet et une ou plusieurs applications dans une machine virtuelle, et à l'exécuter comme un système unique pouvant ou non communiquer avec d'autres machines virtuelles sur un réseau virtuel..

Docker consiste à créer une charge de travail à partir de microservices, avec un service par conteneur. "Ces conteneurs peuvent être distribués", a expliqué Messina, "il peut y avoir plusieurs copies de chacun de ces services distribuées dans l'environnement." Docker consiste à fractionner les objets dans des conteneurs, puis à les brancher comme des blocs Lego pour créer le système dont vous avez besoin..

Mais comment cela s’adapte-t-il à Windows Server? "Une des questions clés est de savoir jusqu'où nous pouvons aller avec la compatibilité des applications avec cela", a souligné Russinovich. "Lorsque vous examinez l'écosystème des applications Windows, il est très complexe et les applications sont très complexes du point de vue des dépendances et des différents services mis à leur disposition par le serveur. Nous déterminons quels services peuvent être virtualisés et lesquels doivent être virtualisé afin que nous puissions présenter cette vue par conteneur des services. Les applications les plus faciles à gérer sont entièrement isolées, elles ne tirent donc pas parti des services de Windows Service Control Manager. "

Chacun à leur

Chaque conteneur aura également besoin de son propre registre, afin que les applications puissent y écrire, mais cela existe déjà depuis plusieurs années dans Windows, afin d'éviter aux utilisateurs de se connecter en tant qu'administrateurs pour installer des applications de bureau..

"Ce que nous faisons ici est plus sophistiqué, mais nous exploitons la virtualisation de système de fichiers et de registre que nous avons réalisée, ainsi que la virtualisation de réseau." Obtenir la manière dont les services sont virtualisés est la clé pour amener Docker à Windows, a expliqué Russinovich, et les espaces de noms font partie intégrante de la réussite de ce travail..

"Certains éléments sont uniques en ce qui concerne ces conteneurs. La virtualisation que vous voyez généralement sur Windows est un seul niveau, mais le modèle Docker est une virtualisation empilée." Cela signifie qu'une image Docker peut être simplement une référence à une autre image, plus du code supplémentaire.

"Vous commencez avec une image de base qui est un système de fichiers virtuel, puis vous superposez une autre image avec son propre système de fichiers virtuel et vous composez sur le dessus [de la première image]. Vous pouvez composer plusieurs de ces différentes couches ensemble. la valeur du format d'emballage Docker.