Si vous évoluez dans le cercle IT des centres de données ou du cloud computing, vous avez probablement entendu parler des conteneurs ordinaires, en particulier Docker, depuis plus d'un an, et les nouvelles à leur sujet n'ont jamais cessé. Après la sortie de Docker 1.0 en juin 2014, son élan a atteint un niveau sans précédent.
La raison d'un tel remue-ménage est que de nombreuses entreprises adoptent Docker à une vitesse stupéfiante. À l'OSCon (Open Source Convention) en juillet 2014, j'ai rencontré d'innombrables entreprises qui avaient déjà transféré des applications serveur des machines virtuelles (VM) vers des conteneurs. En effet, James Turnbull, vice-président des services et du support chez Docker, m'a dit lors de la conférence que trois grandes banques avaient utilisé la version bêta de Docker et utilisaient désormais Docker en production. Pour toute technologie émergente, il s'agit sans aucun doute d'un geste très audacieux, d'autant plus que cela est presque inédit dans le monde financier où la sécurité primait.

Dans le même temps, Docker, une technologie open source, n'est pas seulement le chouchou des géants de Linux comme Red Hat et Canonical. Des éditeurs de logiciels propriétaires tels que Microsoft accueillent également Docker avec enthousiasme.
Alors pourquoi tout le monde court-il après les conteneurs et Docker ? James Bottomley est le directeur technique de la virtualisation de serveurs chez Parallels et un développeur réputé du noyau Linux. Il m'a expliqué que les hyperviseurs tels que Hyper-V, KVM et Xen sont tous « fondés sur des mécanismes d'émulation matérielle virtualisée. Cela signifie qu'ils ont des exigences système élevées. »
Cependant, les conteneurs utilisent un système d'exploitation partagé. Cela signifie qu'ils sont bien plus efficaces que les hyperviseurs dans l'utilisation des ressources système. Au lieu de virtualiser le matériel, les conteneurs résident sur une seule instance Linux. Cela signifie à son tour que vous pouvez « jeter 99.9% du fatras inutile d'une machine virtuelle, ne laissant qu'un petit conteneur soigné, en forme de capsule, contenant votre application », a déclaré Bottomley.
Selon Bottomley, avec un système de conteneurs entièrement optimisé, vous pouvez avoir quatre à six fois plus d’instances d’applications serveur sur le même matériel qu’avec des machines virtuelles Xen ou KVM.
Cela ne semble-t-il pas formidable ? Après tout, vous pouvez exécuter beaucoup plus d’applications sur le serveur. Alors pourquoi personne ne l’a-t-il fait auparavant ? En fait, quelqu’un l’a fait. Les conteneurs sont en réalité un concept ancien.
Les conteneurs remontent au moins à 2000 et à FreeBSD Jails. Oracle Solaris dispose également d’un concept similaire appelé Zones ; des entreprises telles que Parallels, Google et Docker ont travaillé sur des projets open source comme OpenVZ et LXC (Linux Containers) pour faire fonctionner les conteneurs de manière fluide et sécurisée.
En effet, peu de gens connaissent les conteneurs, mais la plupart des gens les utilisent depuis des années. Google a sa propre technologie de conteneurs open source lmctfy (Let Me Contain That For You). Dès que vous utilisez une fonctionnalité Google, comme la recherche, Gmail, Google Docs ou autre chose, un nouveau conteneur est alloué.
Cependant, Docker est construit au-dessus de LXC. Comme toute technologie de conteneurs, du point de vue de l’application, elle dispose de son propre système de fichiers, système de stockage, processeur, mémoire et autres composants. La principale différence entre les conteneurs et les machines virtuelles est que les hyperviseurs abstraient l’appareil entier, tandis que les conteneurs n’abstraient que le noyau du système d’exploitation.
Cela signifie en retour : une chose qu’un hyperviseur peut faire et que les conteneurs ne peuvent pas faire est d’utiliser différents systèmes d’exploitation ou noyaux. Ainsi, par exemple, vous pouvez utiliser Microsoft Azure pour exécuter simultanément des instances de Windows Server 2012 et de SUSE Linux Enterprise Server. En ce qui concerne Docker, tous les conteneurs doivent utiliser le même système d’exploitation et le même noyau.
En revanche, si vous voulez simplement exécuter autant d’instances d’applications serveur que possible sur aussi peu de matériel que possible, vous ne vous souciez peut-être pas beaucoup d’exécuter plusieurs machines virtuelles de systèmes d’exploitation. Si plusieurs copies de la même application correspondent exactement à ce dont vous avez besoin, alors vous allez adorer les conteneurs.
Le passage à Docker devrait permettre aux centres de données ou aux fournisseurs de services de cloud computing d'économiser des dizaines de millions de dollars en électricité et en coûts matériels chaque année. Il n'est donc pas étonnant qu'ils se précipitent pour adopter Docker dès que possible.
Docker apporte plusieurs nouvelles fonctionnalités que les technologies précédentes n'avaient pas. Premièrement, comparé aux méthodes précédentes, Docker rend les conteneurs plus faciles et plus sûrs à déployer et à utiliser. De plus, parce que Docker a coopéré avec d'autres géants du domaine des conteneurs, notamment Canonical, Google, Red Hat et Parallels, pour développer conjointement son composant open source clé libcontainer, il apporte une normalisation indispensable aux conteneurs.
En même temps, les développeurs peuvent utiliser Docker pour empaqueter, livrer et exécuter n'importe quelle application. L'application devient un conteneur LXC léger, portable et autonome qui peut s'exécuter n'importe où. Comme me l'a dit Bottomley, « Les conteneurs vous offrent une portabilité immédiate des applications. »
Jay Lyman, analyste principal chez la société d'études de marché 451 Research, a ajouté : « Les organisations s'efforcent de rendre les applications et les charges de travail plus faciles à porter et à distribuer de manière efficace, standardisée et reproductible, ce qui est parfois difficile à réaliser. Tout comme GitHub favorise la collaboration et l'innovation grâce au partage du code source, Docker Hub, Official Repos et le support commercial aident également de nombreuses entreprises à relever ce défi en améliorant la façon dont les applications sont empaquetées, déployées et gérées. »
Enfin, et non des moindres, les conteneurs Docker sont faciles à déployer dans le cloud. Comme Ben Lloyd Pearson l'a écrit sur opensource.com : « Docker adopte une approche particulière afin de pouvoir être intégré à la plupart des applications DevOps (développement et exploitation), notamment Puppet, Chef, Vagrant et Ansible, ou peut être utilisé seul pour gérer des environnements de développement. Son principal argument de vente est qu'il simplifie bon nombre des tâches habituellement effectuées par ces autres applications. Concrètement, avec Docker, les gens peuvent créer un environnement de développement local identique au serveur de production, exécuter plusieurs environnements de développement sur le même hôte (chacun avec des logiciels, un système d'exploitation et une configuration uniques), tester des projets sur des serveurs nouveaux ou différents, et permettre à quiconque de travailler sur le même projet avec des paramètres identiques, quel que soit l'environnement de l'hôte local. »
En bref, ce que Docker peut faire pour vous, c'est : comparé à d'autres technologies, il permet à davantage d'applications de s'exécuter sur le même matériel ; il permet aux développeurs de créer rapidement et facilement des applications conteneurisées prêtes à l'emploi ; il simplifie grandement les tâches de gestion et de déploiement des applications. En fin de compte, je comprends pourquoi Docker, en tant que technologie d'entreprise, est soudainement devenu populaire. J'espère simplement qu'il sera à la hauteur des attentes ; sinon, il y aura des PDG et des DSI inquiets.
Source : http://cloud.51cto.com/art/201410/453718.htm