Open Source : comment Docker est en passe de démoder les VM

C’est un rêve qui devient réalité. Celui de tout développeur et de tout administrateur système qui manipulerait une application dans un container autosuffisant, indépendant de la plateforme système sur laquelle elle se lance, le tout en quelques secondes pour les plus lourdes d’entre elles. Une révolution dans la virtualisation ?

Mis au point par l’équipe à l’origine du PaaS DotCloud, « Docker est un système de packaging qui permet de prendre n’importe quel code source, n’importe quelle application et de l’envelopper, avec toutes ses dépendances, dans un objet unique, « self-contained », que l’on peut déplacer et faire tourner sur n’importe quel serveur, n’importe où sur la planète », explique Solomon Hykes, le diplomé d’Epitech en 2006 à l’origine de DotCloud et qui vit désormais en Californie, là où Docker vient d’être gratifié de 15 M$ de capital-risque qui s’ajoutent au 11 M$ déjà accordé à DotCloud depuis 2010.

Red Hat s’embarque

Trop beau pour être vrai ? Pourtant, Docker permet de créer de tels containers sur toutes les principales distributions Linux depuis fin novembre 2013. Il est déjà utilisé pour gérer les développements de sociétés à la pointe de la technologie comme eBay. Google l’a intégré à son IaaS GCE et il a donné naissance à CoreOS, une distribution Linux dédiée aux datacenters conçue pour ne recevoir que des applications en containers. Quant à Yandex, le moteur de recherche numéro un en Russie,  il lance Cocaine (*), une PaaS open source qui intègre aussi Docker. Docker est également embarqué dans le projet OpenStack, tant au niveau traitement (Nova) qu’orchestration (Heat).

Enfin, et surtout, Red Hat, dont vingt développeurs travaillent avec Docker depuis l’été dernier, a commencé à supporter Docker dans RHEL 6.5, paru en décembre. L’éditeur vient d’annoncer un programme de certification de la maintenance et du support d’applications « dockérisées », préalable à l’intégration complète de cette technologie dans RHEL 7 (avec un noyau 3.10). Cette version est attendue pour cet été. Docker pourrait bien être alors la « killing » caractéristique de sa PaaS OpenShift.

Exploiter une fonction de Linux

Illustré par les 10 000 étoiles obtenuessur le service web d’hébergement et de gestion de développement GitHub, l’enthousiasme des développeurs explique l’adoption aussi massive que rapide de Docker.  Son interface haut-niveau leur permet de mettre facilement leurs applications dans un container autonome et agnostique. Celui-ci tire parti de LxC (Linux Containers), une fonction d’isolation des process désormais complètement intégrée au noyau de Linux depuis sa version 3.8.

En prise directe avec l’OS et indifférent aux langages, frameworks et bases de données qu’il contient, le container permet de faire tourner l’application de façon totalement isolée du reste de l’environnement. Docker libère donc les développeurs de toutes les tâches de portage sur les systèmes cibles. La structure en couches (layers) des containers leur permet aussi de faire évoluer leur contenu par incrémentation, ce qui participe aussi aux gains de productivité.

Mieux que les VM traditionnelles

Par rapport à l'approche machine virtuelle (VM), qui consiste à virtualiser un environnement complet, OS compris, Docker présente plusieurs avantages. Chaque container n'embarque que le code indispensable à l'application et s'adresse à l'OS et aux ressources logicielles présentes sur le serveur pour le reste. Les containers sont donc nettement moins gros et moins voraces en ressources que les VM, particulièrement en mémoire. Enfin les différents types et versions de VM génèrent des problèmes de compatibilité qu'ignorent les containers Docker.

Bien sûr, les VM sont l'outil idéal pour virtualiser les applications déjà existantes. Mais les caractéristiques des containers Docker correspondent mieux aux nouvelles applications. D'autant plus qu'ils en facilitent et en accélèrent le développement en permettant une optimisation de la gestion des versions et de leurs tests. En l'état actuel de la technologie de Docker, qui n'en est qu'à la version 0.9, les VM gardent toutefois l'atout de la migration à chaud. Mais rien n'empêche d'installer des containers Dockers dans des VM.

En France, Docker est au cœur de l'offre PaaS CloudUnit de TreeptiK, une société fondée il y a deux ans dans les Bouches-du-Rhône. Son offre d'environnement de développement J2EE embarqué dans des containers Docker est en phase de POC (Proof of concept) auprès de plusieurs grandes SSII françaises. Par rapport à un PaaS comme l'OpenShift de Red Hat, qui n'est proposé qu'en nuage public et depuis les Etats-Unis, CloudUnit présente l'avantage d'être installable sur un nuage privé. Là, la technologie de container de CloudUnit permet aux entreprises de déployer très vite des environnements de développement. Et de les faire évoluer en souplesse.

(*) Cocaine : Configurable Omnipotent Custom Applications Integrated Network Engine (humour russe)

Pour en savoir plus sur Docker

- Présentation de Solomon Hykes

En juin dernier, Solomon Hykes a passé une heure avec les étudiants de l'Epitech. Pour une fois qu'un patron de start-up s'exprime en français et qu'il répond avec beaucoup de spontanéité… Avec, en prime, une démo qui devrait ravir les développeurs (durée : une heure)

- Docker 0.9: introducing execution drivers and libcontainer

L'annonce de la dernière version

- How To Install and Use Docker: Getting Started.

Un texte à la fois pédagogique et technique