Comment fonctionne Docker sous Windows
Docker arrive sous Windows Server. Un an après cette officialisation, et alors que des rumeurs de rachat de la start-up par Microsoft se répandent, où on est-on ? C’est le moment de faire le point.
Docker, c’est la technologie de conteneurisation dont tout le monde parle. Elle n’est ni unique, ni révolutionnaire, mais dans un univers qui voit en la philosophie DevOps une planche de salut, elle rencontre un vif succès qui fait des envieux, encourageant ainsi la multiplication de solutions concurrentes alternatives.
Court rappel
Docker est une solution de virtualisation applicative, autrement dit une solution qui isole l’application (avec ses dépendances) du système d’exploitation de sorte qu’elle puisse être aisément transportée d’une machine à une autre avec toutes ses configurations, que son déploiement massif soit rapide et sans surprise, et que l’on puisse exécuter plusieurs instances de cette application sans qu’elles n’entrent en conflit.
Ce type de virtualisation présente plusieurs avantages sur la virtualisation matérielle.
D’abord il n’est pas nécessaire d’embarquer un OS complet pour chaque application virtualisée. Ensuite, les applications s’exécutent directement sur l’OS de la machine physique, accédant directement aux pilotes et accélérations matérielles. Il en résulte d’importantes économies mémoires et des performances accrues comparées à une virtualisation matérielle, donc une meilleure exploitation des machines physiques.
En revanche, on perd la possibilité d’utiliser plusieurs OS différents sur une même machine et la gestion des VM applicatives (les conteneurs) nécessitent des outils différents des VMs classiques.
Une implémentation progressive
Microsoft a mis un gros coup de projecteur sur Docker en annonçant l’an dernier son intention de supporter ce runtime non seulement sous Azure mais aussi sous Windows Server. Une annonce qui s’est concrétisée par étapes.
Dans un premier temps, on a vu naître « boot2docker », un package spécial de VirtualBox embarquant une version allégée de Linux (Tiny Core Linux) destinée à simplement exécuter des conteneurs Docker.
Il est essentiel de comprendre que Windows Server 2016 n’exécutera pas des conteneurs Linux au format Docker mais des conteneurs Windows au format Docker
Depuis Windows, les développeurs pouvaient manipuler les conteneurs Docker en passant par le Linux hébergé par VirtualBox. Cette solution permettait aussi d’en faire autant sur Mac avant que Kitematic (racheté par Docker en mars dernier) n’offre une alternative plus conviviale quoique toujours fondée sur VirtualBox.
Dans un second temps, on a vu apparaître des fonctionnalités Azure permettant d’installer un Host Docker dans une VM Linux Azure en quelques clics simples depuis le portail du Cloud Microsoft.
Autre fonctionnalité rapidement implémentée, la possibilité de créer son propre « Docker Registry » (comprendre son propre entrepôt de conteneurs Docker) au sein d’Azure Blob Storage.
En avril dernier, Microsoft et Docker ont officialisé le client Docker pour Windows. Celui-ci permet de communiquer avec une machine Docker (qu’il s’agisse d’un serveur physique, d’un serveur Cloud ou d’un serveur virtualisé via VirtualBox) depuis un environnement Windows.
Les développeurs peuvent donc désormais construire, exécuter et gérer leurs conteneurs Docker hébergés sous des hosts Linux depuis leur PC Windows et PowerShell.
Prochaine étape : le Docker Runtime sous Windows Server 2016 et Hyper-V. Jusqu’ici, toutes les solutions restaient fondées sur une exécution des « conteneurs » sous Linux. Dès la prochaine « béta » version de Windows Server 2016, attendue en août, il sera possible de créer un « Docker Container » autour d’une application Windows et d’exécuter ce conteneur sous une machine Windows Server 2016.
Il est essentiel de comprendre que Windows Server 2016 n’exécutera pas des conteneurs Linux au format Docker mais des conteneurs Windows au format Docker. L’inverse est aussi vrai, Linux ne pourra exécuter les conteneurs Windows.
Une limite qui se comprend aisément puisque les conteneurs Docker s’appuient sur l’OS comme nous l’avons expliqué et, finalement, ne virtualise que le système de fichiers, les configurations et les zones d’état du système (comme la base de registres sous Windows par exemple).
Toutefois, parce que l’implémentation Windows s’appuie sur les mêmes API, l’administration des conteneurs Linux et Windows sera strictement identique et leur fonctionnement très similaire.
Les conteneurs Windows pourront être publiés dans l’Index Docker (le repository public d’images) et les Docker Registrys (les repository privés) en concomitance avec les conteneurs Linux.
Nano, Core et Hyper-V
D’une manière générale, les conteneurs Dockers s’exécutent souvent au-dessus d’un OS directement hébergé par une machine physique. Dans le cadre de Windows, Microsoft a fait en sorte que les conteneurs Docker s’exécutent sous Windows Server, sous Windows Server Core et surtout sous Windows Server Nano, la dernière mouture ultra-light de Windows Server optimisée pour les workflow DevOps et pensée pour exécuter des conteneurs et des applications « nées dans le cloud ».
Microsoft va-t-il racheter Docker ?
La rumeur court depuis quelques jours sur Internet et secoue la communauté Docker. Microsoft envisagerait de racheter Docker Inc.
Celle-ci reste néanmoins relativement peu crédible. Tout d’abord, Docker n’est officiellement pas à vendre même si Fortune estime que ses fondateurs pourraient se laisser tenter par une offre à plus de 3,5 milliards de dollars. Ensuite, Docker (qui a été adopté par les trois grands Clouds publics, Amazon, Azure et Google) ne vaut probablement pas une telle somme.
Le contrôler n’apporterait pas grand-chose à Microsoft (qui dispose déjà de multiples solutions de conteneurisations et de micro-services dans son escarcelle dont App-V, Drawbridge et Service Fabric) alors que les concurrents se multiplient (Ubuntu LXD, CoreOS Rocket, SpringSource Garden, Spoon, etc. ) et que le vrai marché ne se situe pas au niveau du runtime des conteneurs mais plutôt sur les outils d’administration de ces conteneurs (Lightwave, Kubernetes, Mesos/Chronos, etc.).
Enfin, d’autres acteurs seraient probablement plus intéressés par le rachat de Docker à commencer par Red Hat dont RHEL Atomic Host, au cœur de la stratégie de l’éditeur, offre un cadre sécurisé aux conteneurs Docker.
IBM pourrait aussi être un candidat plus crédible que Microsoft, Docker étant la pierre angulaire de son PaaS Bluemix.
Nano Server ne dispose ni d’interface graphique, ni de login local, ni de REDP (Remote Desktop), ni du support 32 bits (WOW64), ni de l’installateur Windows (MSI). Il se pilote via WMI et Powershell. Un VHD Windows Nano occupe 93% moins d’espace qu’un VHD Windows Server classique. Ce Nano Server est donc idéal pour le Cloud et l’exécution de conteneurs.
Parallèlement à ces conteneurs Windows, Microsoft a également annoncé des conteneurs « Hyper-V ». L’idée est d’offrir aux conteneurs Docker le même niveau d’isolation que ce que peut offrir une virtualisation matérielle.
En effet, l’un des reproches fréquemment faits à Docker (notamment par CoreOS et ses Rocket Containers) est de ne pas offrir suffisamment d’isolation entre les conteneurs et d’être mal adapté à des conceptions « multi-tenant ». Les « Containers Hyper-V » permettent d’acquérir ce niveau d’isolation requis tout en conservant la compatibilité Docker.
Des scénarios de déploiements mixtes
Tout ceci permet en réalité aux entreprises d’utiliser à volonté des machines virtuelles et des conteneurs sur un même serveur physique ou au sein d’un même cluster.
On peut ainsi avoir une machine physique sous Hyper-V mixant des VM Windows, des VM Linux, des conteneurs Hyper-V et des conteneurs Windows pour peu que la machine physique soit directement animée par Windows Server.
Autre solution, vous pouvez continuer à diviser votre serveur physique en machines virtuelles et héberger des conteneurs Linux, des conteneurs Windows et même des conteneurs Hyper-V sur ces machines virtuelles. Une configuration qui démontre une fonctionnalité - jusqu’ici tenue secrète - du nouvel Hyper-V 2016 : il sera possible de virtualiser l’hyperviseur autrement dit de faire tourner Hyper-V au sein de machines virtuelles Hyper-V ou VMWare, une facilité jusqu’ici interdite.
Ce sera donc aux développeurs et aux administrateurs opérationnels de définir les scénarios d’implantation dont ils ont besoin en fonction de leurs contraintes d’isolation et de la simplicité d’administration souhaitée.
Docker sera sans aucun doute la fonctionnalité phare du futur Windows Server 2016. Une première version beta supportant les conteneurs Windows est attendue durant l’été. Il faudra en revanche patienter jusqu’à la fin d’année pour expérimenter les conteneurs Hyper-V.