Cloud : pourquoi Docker peut tout changer

Docker : définition, avantages, inconvénients... Docker vient bousculer le modèle, jusqu'ici fermé, des grands clouds. Il pourrait permettre en effet de basculer une application entre les clouds d'Amazon, Google et Microsoft.

[Mis à jour le 09/03/15 19:30]

1- Comment résumer ce qu'est Docker ? 

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 Server). C'est une technologie qui a pour but de faciliter les déploiements d'application, et la gestion du dimensionnement de l'infrastructure sous-jacente. Elle 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 un Français : Solomon Hykes.

2- Quelle différence avec la virtualisation traditionnelle ?

La virtualisation traditionnelle permet, via un hyperviseur, de simuler une ou plusieurs machines physiques, et les exécuter sous forme de machines virtuelles (VM) sur un serveur machine. Ces VM intègrent elles-mêmes un OS sur lequel les applications qu'elles contiennent sont exécutées. Ce n'est pas le cas du container. Le container fait en effet directement appel à l'OS de sa machine hôte pour réaliser ses appels système et exécuter ses applications. Historiquement, Docker repose sur le format de containers Linux, alias LXC. Il l'étend par le biais d'une API dans l'optique d'exécuter les applications dans des containers standards, qui sont donc portables d'un serveur Linux à l'autre.

3- Quels sont donc les principaux avantages de Docker comparé à la virtualisation ?

Comme le container n'embarque pas d'OS, à la différence de la machine virtuelle, il est par conséquent beaucoup plus léger que cette dernière. Il n'a pas besoin d'activer un second système pour exécuter ses applications. Cela se traduit par un lancement beaucoup plus rapide, mais aussi par la capacité à migrer plus facilement un container d'une machine physique à l'autre, du fait de son faible poids. "Typiquement, une machine virtuelle pourra peser plusieurs Go, alors qu'un container nu représentera, lui, quelques Mo", estime-t-on chez Docker.

Les plus grands clouds l'ont déjà intégré

Mais Docker présente un autre avantage. Grâce à leur légèreté, les containers Docker sont portables de cloud en cloud. Seule condition : que les clouds en présence soient optimisés pour les accueillir. Et c'est désormais le cas des principaux d'entre eux : Amazon Web Services, Microsoft Azure,  Google Compute, OVH ou encore DigitalOcean. Qu'est-ce que cela veut dire ? Eh bien qu'un conteneur Docker, avec ses applications, pourra passer aisément d'un de ses clouds à un autre.

4- Quels sont les grands scénarios dans lesquels Docker apporte une valeur ajoutée aux développeurs ?

D'abord, Docker peut apporter une plus-value en accélérant les déploiements. 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. Du fait de la disparition de l'OS intermédiaire des VM, les développeurs bénéficieront aussi mécaniquement d'une pile applicative plus proche de celle de l'environnement de production.

Docker pourra permettre dans le même temps de concevoir une architecture de test plus agile, chaque container de test pouvant intégrer une brique de l'application (base de données, langages, composants...). Pour tester une nouvelle version d'une brique, il suffira d'inter changer le container correspondant. Côté déploiement continu, Docker présente par ailleurs un intérêt car il permet de limiter les mises à jour au delta du container nécessitant de l'être.

5- Qu'en est-il des avantages côté production ?

Grâce à Docker, il est possible de containériser une application, avec pour chaque couche des containers isolant ses composants. C'est le concept d'architecture de microservices. Ces containers de composant, du fait de leur légèreté, peuvent eux-mêmes, chacun, reposer sur les ressources machines voulues. "Pour parvenir au même résultat, les outils de virtualisation ont besoin d'un pool de VM inactives provisionnées à l'avance", rappelle-t-on chez Docker. 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.

En matière de production, la promesse de Docker va plus loin. Car les containers Docker étant portables d'une infrastructure à l'autre, il devient possible d'imaginer de réaliser du mirroring d'application et de l'équilibrage de charge entre clouds, et pourquoi pas des plans de reprise ou continuité d'activité entre clouds... voire même décider de la reprise d'un projet par un autres fournisseurs clouds.

Docker égal ou excède les performances de KVM

6- La technologie Docker est-elle capable de passer à l'échelle sur des architectures en grappe ?

Pour gérer une architecture de containers en cluster, Docker a créé Swarm. La start-up entend en faire une brique capable de passer à l'échelle. Selon elle, ce moteur d'orchestration pourrait déjà exécuter jusqu'à 50 000 containers sur 1 000 nœuds Amazon EC2. Mais sur ce terrain de la performance, la société de San Francisco veut aller encore plus loin. Elle a acquis début 2016 la start-up Conductant qui s'est illustrée dans le développement d'Apache Aurora. Un système de clustering qui est conçu pour gérer des applications atteignant des centaines de millions d'utilisateurs, et qu'elle envisage désormais d'associer à Swarm. Toujours pour faciliter le déploiement des architectures en container, Docker propose, aussi, une console graphique de pilotage (Docker Universal Control Plane) et des outils de sécurité (notamment Trusted Registry). Toutes ces briques s'inscrivent dans une plateforme dite de  Containers as a Service (CaaS), baptisée Docker Datacenter (DDC), visant à assurer le pilotage complet d'un cloud orienté containers (en recouvrant les processus de build, ship et run).

Docker a aussi acquis fin 2014 la plateforme cloud Tutum : un environnement SaaS conçu pour piloter le déploiement d'applications containerisées sur divers clouds publics (Microsoft Azure, Digital Ocean, Amazon Web Services et IBM SoftLayer).

7- 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 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 des data centers.

8- Quelles sont les limites de la technologie Docker ? 

Initialement limité à Linux, Docker va être porté sur Windows dans le cadre de la prochaine version du serveur de Microsoft (Windows Server 2016). 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 traditionnelle. Une machine virtuelle embarquant Linux peut en effet tourner sur un serveur Windows, et inversement.

La sécurité a été très largement renforcée dans Docker

9- Quid de Docker en matière de sécurité ?

Docker a été très critiqué sur ce plan. LXC [Linux Containers NDLR], sur lequel Docker, repose est en retard sur cet aspect. Il ne permet pas d'isoler les ressources utilisées par des containers basés sur la même machine, si bien qu'un container peut très bien cannibaliser la ressource et déstabiliser ses voisins... Pour répondre à cette critique, Docker a introduit la possibilité d'appliquer une limite de consommation de ressource pour les containers d'une même machine (avec ulimit).

Toujours dans le but de renforcer la sécurité et l'isolation des containers, le moteur Docker s'est aussi étendu à la prise en charge de dispositifs Linux de bas niveau (comme Seccomp et user namespace). Fin 2015, Docker a également sorti plusieurs briques commerciales pour renforcer la sécurité des containers : Docker Content Trust (qui permet de certifier l'éditeur d'un container et le contenu de ce dernier), ainsi qu'un service d'analyse de sécurité et de détection de vulnérabilité dans les images de container (Docker Security Scanning).

10- L'unikernel est-ce la même chose qu'un container ?

Non. L'unikernel se situe à mi-chemin entre la virtualisation serveur classique et le container. Alors que la virtualisation traditionnelle reprend l'intégralité de l'OS serveur dans la machine virtuelle, l'unikernel n'embarque, lui, dans la VM que les librairies du système nécessaires à l'exécution de l'application qu'elle contient. Le noyau de l'OS restant lui en dehors de la machine. A la différence du container Docker, l'unikernel reprend donc une partie de l'OS dans la VM.

Parmi ses principaux avantages comparé au container, l'unikernel peut permettre d'optimiser la couche système embarquée dans la VM aux spécificités de l'application à exécuter. En janvier 2015, Docker a acquis la société Unikernel Systems, une start-up spécialisée dans l'unikernel, dans l'optique de proposer une alternative à ses containers.

Piloter graphiquement les containers Docker, c'est possible

11- Historiquement, les containers Docker se créent et se manipulent en lignes de commande. Docker propose-t-il sur un interface de gestion graphique des containers ?  

La réponse est oui. C'est l'objet du rachat de Kitematic début 2015. Cette société apporte à Docker une solution graphique de gestion de containers. Cette nouvelle brique pourrait se révéler assez stratégique pour Docker. A la manière de PHPMyAdmin et WampServer en leur temps pour la pile LAMP, elle pourrait permettre en effet de démocratiser sa technologie.

12- 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. Ce partage peut être éventuellement restreint à une équipe de développeurs, moyennant la souscription à un service premium. Hébergeant plus de 100 000 images de container (avec Ubuntu, WordPress, MySQL, NodeJS...), cet espace est aussi intégré à GitHub. Docker commercialise par ailleurs une version on-premise du Docker Hub (le Docker Hub Enterprise).

 A lire aussi

Cloud public / Open source