Ce n’est d’ailleurs pas de manière « innocente » que les géants du Cloud que sont Google, Amazon, Microsoft, IBM et d’autres, se sont intéressés à la technologie open source de l’ex-startup française « dotCloud », fondée en 2008 par Solomon Hykes, pour l’implémenter dans leurs solutions. On peut même être sûr qu’ils n’avaient pas la tête dans les nuages quand ils ont fait le pas, même si…
Pour une fois, ce n’est pas la française des jeux qui se met en avant, mais bien l’américain Docker qui, au travers de sa technologie de containers virtuels, invente le jeu du balancier d’applications « cloud à cloud », avec en prime, des règles très simplistes.
Mais alors, c’est quoi « Docker » ?
Docker est une société américaine, fondée par le français Solomon HYKES, qui propose une technologie de containers virtuels ultralégère au travers d’une plateforme open source, permettant de créer et déployer des applications. En deux mots, Docker implémente une application dans un container virtuel, de manière à pouvoir l’exécuter sur n’importe quel serveur Linux et très prochainement Windows. Les gains en sont multiples :
- Simplification du Design et du dimensionnement des infrastructures sous-jacentes.
- Facilité du déploiement des applications.
Et pourquoi Docker ?
A contrario de la virtualisation, qui permet au travers d’un hyperviseur (1ère couche système) d’héberger des applications dans des machines virtuelles (2ème couche système), les containers sont eux directement implémentés sur le système du serveur (1 couche système, suppression de celle de l’hyperviseur), et hébergent les applications.
A la différence de la machine virtuelle, le container n’implémente pas de système d’exploitation pour exécuter ses applications, ce qui le rend beaucoup plus léger. Docker estime qu’un container nu pèse quelques Mo, alors qu’une machine virtuelle plusieurs Go. C’est pour cela que les bénéfices de la « containerisation » sont multiples :
- Lancement beaucoup plus rapide
- Facilité de migration d’une machine à une autre
Autre avantage, lié à la « légèreté » du container : la portabilité. En effet, comme je le disais un peu plus haut de manière « très légère », le jeu du balancier d’applications « cloud à cloud » va permettre de déplacer les containers entre tous types de clouds qui implémentent cette technologie (AWS d’Amazon, Azure de Microsoft, Google Compte de Google, OVH, etc…). Docker devient donc un acteur incontournable dans le nuage. Un utilisateur pourra aussi implémenter un container Docker sur son hôte local pour effectuer le traitement à partir de ses ressources (un développeur par exemple), et le porter lorsqu’il a terminé son traitement, sur des machines physiques ou virtuelles, soit dans le Datacenter ou dans le cloud.
Un petit bémol quand même à la défaveur de la containerisation : à contrario de la « virtualisation » qui permet à une machine virtuelle linux de tourner sur un serveur Windows (et vice versa), un conteneur créé sous Linux ne pourra jamais être porté sur Windows (quand Docker aura fait cette portabilité bien entendu).
Justement, qu’en est'il de Docker sur Windows
Docker repose sur le format de containers Linux, alias LXC (Linux Containers) et n’a pas encore porté sa technologie sous Windows. Mais attention, un autre acteur du marché, VMware pour ne pas le citer, pourrait en être le précurseur dans le monde Windows. Avec le rachat de CloudVolumes, VMware développe une solution équivalente pour Windows, baptisée « App Volumes ».
De son côté, Microsoft ne ménage pas ses efforts pour disposer d’une offre pour Windows Server si on en croit les rumeurs. Un partenariat avec Docker doit permettre une synchronisation de ses API avec celles de la version Linux.
Pertinence et insolence...
Depuis ses débuts, Docker a été conçu pour traiter la prise en charge d'architecture d'application fortement distribuée. Ce concept, dit « d’architecture de micro-services » consiste à containeriser les applications de manière à isoler tous leurs composants et leurs services afin de pouvoir les dispatchers sur les ressources des machines souhaitées.
D’après Docker, pour obtenir le même résultat dans un mode « classique de virtualisation », il faudrait provisionner à l’avance un pool de machines virtuelles inactives, avec pour effet pervers un : « mais qu’est ce qui se passe lorsque l’on arrive à la fin du pool ? ». Avec Docker, comme un container démarre en quelques secondes, on ne provisionne rien à l’avance et nul besoin de pool.
Plutôt pratique pour les environnements qui demandent de très fortes montées en charge, non ?
Depuis février 2015, Docker en est à sa version 1.5. Les apports majeurs sont :
- La gestion des performances du container pour le suivi des consommations CPU, RAM, I/O, etc… La nouvelle API permettra notamment une supervision des containers pour les éditeurs d’applications de monitoring.
- Le support du protocole IPv6
- Le mode lecture seule sur le container pour garantir l’intégrité des applications
Vidéo de Salomon HYKES : The Linux Container Engine