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.
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 ».
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.