Vous en avez certainement entendu parler ces dernières semaines, voire ces derniers mois : Docker serait en passe de révolutionner les méthodes et technologies de déploiement d’infrastructures cloud. Mais qu’est-ce que Docker ? Que permet-il ? Et doit-on dès aujourd’hui migrer son infrastructure cloud sur cette solution ? Un point complet s’impose.
Docker, qu’est-ce que c’est ?
Tentons tout d’abord de comprendre, avec des termes simples, ce qu’est Docker. Cette solution, développée par un français expatrié en Californie, permet d’embarquer et de faire fonctionner des applications et systèmes d’exploitation dans des « conteneurs », comprenez des espaces clos sur votre serveur.
Jusque là, rien de bien révolutionnaire puisque, si on laisse de côté le terme de conteneur, c’est la définition que l’on pourrait donner à un système classique de virtualisation comme VMWare, Xen ou HyperV.
La virtualisation classique
En fait, là où Docker tente de révolutionner la virtualisation de systèmes et d’application c’est sur les aspects de performance et de portabilité. En effet, dans une solution de virtualisation classique, on a besoin :
- d’un système d’exploitation (ex : Linux Debian)
- d’un logiciel pour gérer la virtualisation, nommé hyperviseur (ex : VMWare)
- d’un système d’exploitation virtualisé (ex : Windows Server)
- des applications nécessaires à son projet, installées sur le système d’exploitation virtualisé (ex : clients mails, logiciels métier…)
Une machine virtuelle est donc lourde et consomme d’importantes ressources puisque nous avons, en plus du système d’exploitation de base, un logiciel (l’hyperviseur), un système virtualisé « complet » et les applications.
La virtualisation vue par Docker
Avec une solution basée sur Docker, nous pouvons théoriquement avoir, sur notre serveur :
- un système d’exploitation (ex : Linux Debian)
- le client Docker (une « simple » application légère qui tourne)
- nos applications embarqués dans un ou plusieurs conteneurs (ex : applications métiers…)
Ainsi, en théorie, nous pouvons nous passer d’un système d’exploitation embarqué et d’un hyperviseur, relativement lourds. Pour cela, Docker va en fait utiliser un système de couches et de conteneurs qui vont permettre d’isoler plusieurs applications, tout en interagissant avec le système d’exploitation hôte pour rechercher les fichiers et ressources nécessaires.
Docker n’a donc pas besoin de tout embarquer puisqu’il peut compter sur le système de base du serveur pour combler ses besoins. De plus, un conteneur peut être migré, en quelques secondes, sur un autre système utilisant l’application Docker.
La version pour les pros de Linux
Pour les plus techniciens d’entre-vous, on peut résumer cela de la façon suivante :
Docker se base sur la technologie LXC d’Unix pour créer ses conteneurs
- il utilise les Namespaces de Linux pour isoler ses conteneurs
- il fait appel aux Control Groups pour gérer l’accès aux ressources nécessaires
- il exploite les Union File Systems pour monter ses couches
Une révolution pour le cloud ?
Venons-en au fait : est-ce que Docker va révolutionner le cloud ? Oui… et non ! En fait, tout dépend de la façon dont il évoluera. En théorie, cela pourrait être le cas puisqu’il permet deux choses cruciales.
Tout d’abord, la réduction des ressources nécessaires au déploiement d’un cloud. Grâce à l’utilisation des conteneurs pouvant faire tourner des applications sans système d’exploitation embarqué et à l’absence d’hyperviseur, on peut envisager un cloud tournant sur des infrastructures serveurs moins puissantes, plus petites, et donc moins coûteuses.
De plus, étant donné que Docker a été conçu pour faciliter la portabilité des conteneurs, on peut envisager la migration entre différentes infrastructures (ex : de serveurs Windows à des serveurs Linux), voire même la redondance en temps réel entre ces infrastructures.
Mais nous n’en sommes, pour le moment, qu’à la théorie. Docker est une application qui, dans sa forme actuelle, est surtout destinée aux développeurs. Ainsi, elle s’avère idéale pour tester, en quelques secondes via un serveur de développement peu performant, la qualité d’un développement sur plusieurs systèmes. Au-delà, Docker n’est pas encore assez performant et ne fait pas le poids face aux systèmes de virtualisation qui ont plusieurs années d’expériences. De plus, actuellement, Docker est clairement utilisé dans des machines virtuelles classiques pour permettre à plus d’applications de tourner sans consommer plus de ressources. Il est donc perçu comme une brique complémentaire de la virtualisation classique, et non comme un concurrent.
Ainsi, et bien qu’il n’en soit qu’à ses débuts, il est important de suivre le développement de ce petit poucet qui pourrait bien, prochainement, devenir aussi gros que l’ogre. Chez Diatem, nous étudions d’ailleurs déjà les possibilités d’intégration dans notre infrastructure cloud.
Docker, seule solution de conteneurs ?
Pour finir, il est important de signaler que Docker n’est pas la seule solution à envisager les conteneurs pour remplacer, ou compléter, la virtualisation par hyperviseur.
Et même plus, Docker fait aujourd’hui face à un concurrent de taille qui critique sèchement son modèle, après l’avoir pourtant officiellement soutenu. Ce concurrent, c’est CoreOS, la société éditrice de la distribution Linux du même nom. CoreOS a décidé, suite à des divergences d’opinions sur ce que devait être les conteneurs et leur façon de fonctionner, de développer son propre standard et son environnement.
Ainsi, CoreOS a créé App Container, un standard qui s’appuie sur Rocket, la technologie permettant la construction et la gestion des conteneurs.
Il n’est pas question ici de départager les deux solutions, ni même de résumer le débat qui les oppose. Mais il est important de souligner que la solution de CoreOS a reçu, officiellement, des soutiens de poids en mai 2015. Ces soutiens ce sont des employés de Google, de Red Hat (distribution Linux) et de Twitter. Mais, en annonçant un soutien officiel, ces employés indique officieusement que leur employeur soutient aussi App Container. Et ce n’est pas tout puisque VMware et Apcera, deux gros acteurs du cloud, ont aussi apporté leur soutien.
Autant dire que Docker, même s’il fait de plus en plus parler de lui, n’est pas encore sûr de s’imposer sur le marché. Il ne faut donc pas négliger App Container, ainsi que d’autres solutions qui peuvent émerger, et continuer à suivre l’évolution des technologies de conteneurs qui n’en sont, pour le moment, qu’à leurs débuts.
En attendant, si vous avez besoin d’un cloud, n’hésitez pas à nous contacter.