Docker: Le concurrent de la virtualisation

Docker permet d’embarquer une application dans un container virtuel qui pourra s’exécuter sur n’importe quel serveur (Linux et bientôt Windows). C’est une technologie qui a pour but de faciliter les déploiements d’une application, et la gestion du dimensionnement de l’infrastructure sous-jacente. Cette solution est proposée en open source (sous licence Apache 2.0) par une société américaine, également appelée Docker, qui a été lancée par le Français Solomon Hykes.

Les containers vont-ils enterrer la virtualisation ?
Plus personne ne semble pouvoir freiner l’essor de Docker et certains estiment désormais que la technologie des silos va remplacer la virtualisation. Celle-ci présente d’énormes avantages en termes de compacité. Aujourd’hui, avec les technologies de virtualisation de type VMware, les systèmes d’information fonctionnent globalement sur le principe suivant : une plateforme, une application. Cela implique des coûts importants de licences sur les systèmes d’exploitation.
Les opérateurs de cloud estiment que, grâce aux containers, leurs serveurs pourront exécuter jusqu’à 10 fois plus d’applications qu’actuellement en évitant justement cette duplication des OS, induite par la virtualisation. Les technologies IAAS et la portabilité Docker vont potentiellement permettre de revenir à des plateformes plus complexes (NDLR : c’est-à-dire exécutant des applications en silos de natures différentes), mais sans les difficultés inhérentes à cette nouvelle complexité étant donné le cloisonnement offert par docker. Conséquence : les applications seront de plus en plus éditées sous forme de containers directement déployables et de moins en moins sous forme d’installeurs ou de packs d’installation. Le Docker Hub, référentiel des containers disponible sur le site, en compte une centaine d’officiels, mais aussi plus de 45 300 publiés par ses utilisateurs. Parmi les entreprises à avoir créé un référentiel sur le Docker Hub figurentSpotify, Baidu, Rackspace, eBay.

Compatibilité windows
Issu de LXC, Docker est intimement lié à Linux et il n’y a pas de technologie équivalente sous Windows. Du moins pour l’instant, car VMware a réalisé l’acquisition d’une start-up, CloudVolumes, qui développe une solution équivalente, mais pour Windows. La solution a désormais rejoint le portefeuille VMware sous le nom d’App Volumes. De son côté, Microsoft propose depuis juin l’hébergement de silos Docker sur son cloud Azure, mais sur des machines virtuelles Linux.
Un premier pas vers un plein support Windows, car Microsoft travaille d’arrache-pied pour disposer d’une offre pour Windows Server. L’éditeur a noué un partenariat avec Docker, notamment pour synchroniser ses API avec celles de la version Linux. Enfin, Microsoft contribue au projet « Kubernetes », si bien que dans quelques mois, l’administrateur d’une infrastructure pourra distribuer ses applications Windows ou Linux sur son architecture cloud au moyen des mêmes outils. Une nouvelle idée de l’informatique.

Quels sont les grands scénarios dans lesquels Docker apporte une valeur ajoutée aux développeurs ?
D’abord, Docker peut apporter une vraie plus-value en accélérant les processus de déploiement. Pourquoi ? Parce que les containers Docker sont légers. Les basculer d’un environnement de développement ou de test à un environnement de production peut donc se faire presque en un clic, ce qui n’est pas le cas pour la VM, plus lourde. Certains acteurs du cloud ayant implémenté les containers mettent  en avant cet argument.
Du fait de la disparition de l’OS intermédiaire des VM, les développeurs bénéficieront aussi mécaniquement d’une pile plus proche de celle de l’environnement de production. Une aubaine pour les environnements de test qui deviendront par conséquent plus sûrs. Côté déploiement continu, Docker présente par ailleurs un intérêt particulier car il permet de limiter les mises à jour à une partie du système containérisé. “Notre technologie, grâce à son dispositif de Build associé, fait la différence entre deux états de système de fichiers, et ne met à jour que cette différence”, précise-t-on chez Docker.

Qu’en est-il des avantages côté production ?
Docker a été d’emblée conçu pour gérer des applications massivement distribuées. Grâce à Docker, il est ainsi possible de containériser une application, avec pour chaque couche des containers isolant leurs composants ou services. C’est le concept d’architecture de microservices. Ces containers de composant peuvent eux-même, chacun, reposer sur les ressources machines voulues. Et sur le papier, il est envisageable de transférer ces containers à la volée sur un cluster de plus en plus grand, avec un dimensionnement adapté à chaque couche, voire chaque composant, en termes de puissance machine.
“Pour parvenir au même résultat, les outils de virtualisation ont besoin d’un pool de VM inactives provisionnées à l’avance”, explique-t-on chez Docker. “Or, cette solution peut poser problème. Que se passe-t-il en effet quand on arrive à la fin du pool ? Avec Docker, nul besoin de pool, puisqu’un container est bootable en quelques secondes. Ce qui offre une nouvelle solution pour les très fortes montées en charge. Cela permet aussi l’économie de tels pools.”
Pour relever ce défi, Docker est en train de travailler à une meilleure prise en charge des clusters. C’est l’objet du projet Swarn, mais aussi d’un chantier visant à ouvrir Docker aux appliances réseau – qui pourront être utilisées pour orchestrer les flux dans des clusters de containers. En attendant, certains éditeurs tiers ont commencé à construire des solutions de gestion de containers Docker en cluster, qui se veulent plus abouties que Swarn. C’est le cas notamment de ClusterHQ avec une solution de gestion d’architecture applicative en containers massivement distribuée – qui offre des fonctions de gestion à la volée et à chaud des containers .
Mais en matière de production, la promesse de Docker va encore plus loin. Car les containers Docker étant portables entre clouds (pour peu que ces clouds en aient implémenté la technologie), il devient possible d’imaginer de mettre en place des processus de réplication d’application entre IaaS de différents fournisseurs. Et là, ce sont des perspectives totalement nouvelles qui s’ouvrent : mirroring d’application entre clouds, plan de reprise ou continuité d’activité entre clouds, reprise de projets par un autres fournisseurs clouds, et même équilibrage de charge entre clouds…
Existe-t-il des benchmark entre Docker et les technologies de virtualisation classiques, et quels sont leurs enseignements ?
Oui. IBM notamment a réalisé un comparatif de performance entre Docker et KVM. Sa conclusion est sans appel : Docker égale ou excède les performances de cette technologie de virtualisation open source – et ce dans tous les cas testés dans le cadre du comparatif. Pour Big Blue, la performance des containers Docker se rapproche même de celle des serveurs machines nus.
En éliminant la couche de virtualisation, consommatrice en ressources machines, Docker permettrait même de réduire la consommation de RAM de 4 à 30 fois. Ce qui contribuait à optimiser l’utilisation des serveurs, et par conséquent la consommation d’énergie – qui reste l’un des principaux postes de dépense desdata centers.
Quelles sont les limites de la technologie Docker ?
Initialement limité à Linux, Docker va être porté sur Windows d’ici le lancement de la prochaine version majeur du serveur de Microsoft, prévu pour 2015. Cette annonce fait suite à un partenariat signé par Docker avec l’éditeur de Redmond. Il n’en reste pas moins que les containers créés sur Linux, ne pourront être portables sur Windows, et réciproquement. Il s’agit là de la limite majeure de Docker, et sa principale différence avec la virtualisation. Une machine virtuelle embarquant Linux peut en effet tourner sur un serveur Windows, et inversement.
A quelle version de Docker en est-on aujourd’hui ?
Après une version 1.4 centrée sur la correction de bugs, Docker 1.5 est sorti en février 2015. Il introduit notamment le support du protocole IPv6. Ainsi, il est désormais possible de résoudre une adresse IPv6 dans un conteneur Docker, mais également d’utiliser le protocole pour communiquer entre conteneurs sur des serveurs machines ou virtuels différents. Pour garantir l’intégrité des applications embarquées, un mode de lecteur seule du container est aussi introduit. Une nouvelle API fait en outre son apparition pour mesurer la performance du container (suivre la consommation de RAM, CPU, I/O…). Elles permettra à des éditeurs tiers d’intégrer la possibilité de superviser des containers Docker à leur application de monitoring.
Par où commencer un projet de déploiement de Docker ?
La communauté des utilisateurs de Docker commence à être importante, même si sa taille reste difficile à évaluer. Il existe donc une documentation fournie portant sur cette technologie open source sur le web. Rien que sur StackOverFlow,plusieurs milliers de pages lui sont déjà consacrées.
La société Docker met part ailleurs à la disposition des utilisateurs un service, baptisé le Docker Hub, conçu permettre l’échange et le build de containers Docker pré paramétrés (et gratuits). Ce partage peut être éventuellement restreint à une équipe de développeurs, moyennant la souscription à un service premium. Hébergeant déjà 40 000 containers (avec Ubuntu, WordPress, MySQL, NodeJS…), cet espace est aussi intégré à GitHub depuis lequel il sera possible d’incrémenter des mises à jour de containers présents sur le Docker Hub.
Share on Google Plus
    Blogger Comment
    Facebook Comment