Docker : tout ce qu'il faut savoir

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

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.

Les containers Docker au format Linux exploitent un composant du noyau Linux baptisé LXC (ou Linux Container). Au format Windows Server, ils s'adossent à une brique équivalente, appelée Windows Server Container. Le moteur Docker normalise ces briques par le biais d'API dans l'optique d'exécuter les applications dans des containers standards, qui sont ensuite portables d'un serveur à 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. 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 gérer des architectures complexes ?

Pour faciliter le management des architectures complexes, Docker à construit une plateforme de Containers-as-a-Service. Baptisée Docker Enterprise Edition (Docker EE), elle comprend les principaux outils nécessaires pour gérer le déploiement, le pilotage, la sécurité et le monitoring de tels environnements. Docker a aussi acquis fin 2014 la plateforme cloud Tutum : un environnement SaaS conçu pour piloter la mise en œuvre d'applications containerisées sur divers clouds publics (Microsoft Azure, Digital Ocean, Amazon Web Services et IBM SoftLayer). Côté gestion de cluster, Docker EE intègre à la fois Swarm, son moteur d'orchestration maison, mais aussi Kubernetes, qui n'est autre que la principale alternative à ce dernier. Kubernetes est issu d'un projet open source lancé à l'initiative de Google. 

Mais sur le front de l'automatisation d'infrastructures, la société de San Francisco entend aller encore plus loin. Dans cette optique, 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 conçu pour gérer des applications atteignant des centaines de millions d'utilisateurs. Début 2017, elle a aussi mis la main sur la jeune pousse française Inifinit qui édite une technologie de stockage distribué et multi-plateforme. 

7- Existe-t-il des benchmark entre Docker et les technologies de virtualisation classiques, et quels sont leurs enseignements ?

Oui. IBM notamment a publié en 2014 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. Pour Big Blue, la vélocité des containers Docker se rapproche même de celle des serveurs machines nus. En éliminant la couche de virtualisation, consommatrice en ressources, Docker permettrait de réduire la consommation de RAM de 4 à 30 fois.

Publiée en août 2017 par le département de recherche informatique de l'université de Lund en Suède, une autre étude compare cette fois la performance des containers avec celle des machines VMware. Elle aboutit elle-aussi à une conclusion en faveur de Docker.

8- Quelles sont les limites de la technologie Docker ? 

Initialement limité à Linux, Docker a depuis été porté sur Windows Server. Il n'en reste pas moins que les containers créés sur Linux, ne pourront être portables "nativement" sur le serveur de Microsoft, 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- 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, LinuxKit, 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

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

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

Serveurs / Windows

Annonces Google