Docker : tout ce qu'il faut savoir

Docker bouscule le modèle, jusqu'ici fermé, des grands clouds. Ses containers logiciels permettent en effet de basculer une application entre les clouds d'Amazon, Google, Microsoft...

[Mis à jour le 16 août 2017 à 15:10] Docker, éditeur de la technologie de container du même nom, serait sur le point de boucler une levée de fonds de 75 millions de dollars.  L'information est rapportée par Bloomberg qui évoque "des sources proches du dossier".  Si elle se confirme, l'opération pourrait contribuer à valoriser Docker à hauteur de 1,3 milliard de dollars. Le nouvel apport de fonds aurait pour objectif de renforcer l'équipe marketing et de vente du fournisseur.

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 machine. D'abord optimisé pour Linux, il l'est désormais pour 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 en partie 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 ou un terminal. 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 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 (du fait de son faible poids) d'une machine physique à l'autre. Autre avantage : les containers Docker, du fait de leur légèreté, 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 Cloud Platform, OVH... 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 accélère 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éficient aussi d'une pile applicative plus proche de celle de l'environnement de production, ce qui engendre mécaniquement moins de mauvaises surprises lors des passages en 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. Enfin côté déploiement continu, Docker présente 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. Mais, 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 autre fournisseur cloud.

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 développé Swarm. L'enjeu : étendre la portabilité, au-delà d'un container unitaire, à toute une architecture de containers en cluster. Docker a parallèlement introduit dans son orchestrateur tous les processus nécessaires à la production à grande échelle (équilibrage de charge, gestion de la résilience, du chiffrement des transactions entre les nœuds...).

Mais en matière de 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. 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, ou Docker Secrets qui gère l'intégrité d'un container tout au long de son cycle de vie). 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). Enfin, 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.

8- Quelles sont les limites de la technologie Docker ? 

Initialement limité à Linux, Docker a depuis été porté sur Windows dans le cadre de Windows Server 2016. Cette annonce fait suite à un partenariat signé par Docker avec Microsoft. 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.

9. Au-delà des serveurs, les containers Docker peuvent-ils être utilisés sur des terminaux ou objets connectés ?

La réponse est oui. Docker propose depuis longtemps des outils permettant aux développeurs de manipuler des containers et tester des architectures containérisées sur leur poste. L'éditeur a aussi annoncé en avril 2017 un kit d'outils open source (baptisé LinuxKit) conçu pour assembler une distribution Linux à partir de composants systèmes embarqués dans des containers. L'idée est de proposer une architecture modulaire pour bâtir une distribution personnalisée se limitant aux seuls processus systèmes nécessaires aux applications. Les avantages ? Etant containérisé, chaque composant peut être maintenu indépendamment. L'architecture donne aussi la possibilité de réduire au maximum le nombre de processus, ce qui optimise le poids de l'OS et sa surface d'attaque. Une solution présentée par Docker comme idéale pour les objets connectés. Le projet LinuxKit a été lancé en lien avec la Fondation Linux et plusieurs acteurs du marché (ARM, HPE, IBM, Intel et Microsoft).

10- 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 notamment 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).

11- Quels sont les composants proposés par Docker en open source ?

Docker a publié une dizaine de composants sous licence Apache (voir le graphique ci-dessous). Des composants qui recouvrent les principales fonctionnalités nécessaires au pilotage d'une architecture containérisée : gestion du réseau, du stockage, de la sécurité... Parmi eux figure containerd. Une brique centrale de la technologie Docker puisqu'elle permet l'exécution du container. Considérant la criticité de cette brique en vue de la standardisation des offres de container, Docker en a reversé les droits à une organisation indépendante (la Cloud Native Computing Foundation). En avril 2017, l'éditeur est allé un peu plus loin dans la démarche en lançant Moby : un framework open source dessiné pour construire des systèmes de container. Il comprend 80 composants open source : ceux de Docker (containerd, swarmkit...) mais aussi d'autres projets (Redis, Nginx...). Moby se veut être un projet participatif, à travers lequel tous les acteurs de la communauté Docker construisant des solutions à base de container peuvent partager des briques.

Historique des composants de l'offre de Docker mis en open source. © Docker

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

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

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.

14- 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 une documentation fournie portant sur cette technologie open source sur le web. Rien que sur StackOverFlow, plusieurs milliers de pages lui sont consacrées. La société 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. Hébergeant plus de 460 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). Enfin, Docker a lancé une boutique en ligne d'applications. Objectif : offrir aux éditeurs un canal commercial pour distribuer leurs applications sous forme de containers.


 A lire aussi

Contenus sponsorisés