In Cloud & Virtualisation, IT Engineering

Dans un dernier article nous avons abordé le sujet de la virtualisation et de son intérêt pour les entreprises. Mais il existe des alternatives à la virtualisation, et c’est là qu’intervient Docker, une solution qui monte et qui vient bousculer les infrastructures de développement.

 

Qu’est-ce que Docker ?

Docker est une solution en open source (licence Apache 2.0) qui vise à automatiser le déploiement d’applications dans ce que l’on nomme des “containers”. Situé entre la virtualisation applicative et l’automatisation (on parle aussi de virtualisation légère), le projet est officiellement distribué en 2013 et depuis, il ne cesse de gagner en popularité.

 

Rappel historique sur le projet Docker

Avant de rentrer dans le vif du sujet, je vous propose de faire un petit récapitulatif sur la création du projet Docker, et pour ça il faut d’abord s’intéresser à son créateur, Solomon Hykes. En effet, il est à l’origine de la création de la société dotCloud en 2008.  L’entreprise compte d’abord capitaliser sur l’émergence du concept du Cloud Computing et se positionne très vite comme fournisseur de solutions PaaS.

 

En 2010, dotCloud accède au célèbre incubateur américain Y Combinator (qui a vu passer DropBox ou AirBnb) spécialisé dans les projets novateurs dans l’IT. En 2013, pour un projet interne, la société développe une solution qui va permettre d’embarquer une ou plusieurs applications dans un container virtuel qui pourra s’exécuter sur n’importe quel serveur. Les bases de docker sont alors posées.

 

Dès novembre 2013, le projet rencontre un fort succès, il a déjà été mis en favoris plus de 7.300 fois sur le célèbre site de partage GitHub. Il est alors le 14e projet le plus populaire, avec plus de 900 forks et 200 contributeurs. En septembre 2016, toujours sur GitHub, le projet a été mis en favoris plus de 34 000 fois. Autre preuve de succès de Docker : sa communauté qui compte un nombre important de fans et contributeurs.

 

 

Les grands principes de Docker

Ok, maintenant qu’on a compris d’où vient Docker, on va pouvoir expliquer comment ça fonctionne.

Docker, c’est une solution permettant de créer des environnements clos au sein d’un même OS, les fameux containers. En effet, la conteneurisation permet de créer un environnement d’exécution isolé qui dispose de ses propres ressources.

 

L’utilisation des containers Docker repose sur trois principes :

  • Le noyau du système d’exploitation Linux (ou kernel)
  • Les cgroups « control groups » qui est une fonction du kernel permettant de gérer l’accès aux différentes ressources de la machine (processeur, espace disque, utilisation de la RAM, etc.)
  • Troisième et dernier composant nécessaire, les Linux Containers ou LXC. C’est une méthode de virtualisation au niveau système (car basé sur le kernel et les cgroups), permettant de faire fonctionner plusieurs systèmes Linux isolé.

 

Mais finalement, c’est quoi la différence avec la virtualisation ?

 

Quelle différence entre Docker et une VM ?

Grâce à Docker, on peut donc mettre en place des environnements isolés. Cela pourrait être comparé à l’utilisation d’une VM, mais là ou une machine virtuelle isole tout un système d’exploitation, Docker, lui, permet de partager les ressources du système hôte, le kernel va ainsi interagir avec les différents environnements de Docker.

 

“La conteneurisation permet aux instances virtuelles de partager un système d’exploitation hôte unique.”

 

Avec Docker, le kernel est en mesure de partager les ressources de l’hôte et d’interagir avec les différents containers. Ainsi on comprend que Docker ne fonctionne pas comme une Virtual Machine mais permet d’offrir un environnement de travail virtuel. On parle de virtualisation légère pour Docker. Qui plus est, puisque le container n’a pas besoin de faire tourner son propose système, il est plus petit, plus facile à migrer et plus rapide à sauvegarder.

 

Principe de fonctionnement de docker

 

Les conteneurs peuvent interagir directement avec le matériel et les périphériques par l’intermédiaire des cgroups. Cela permet un accès direct aux ressources de la machine hôte, sans passer par une couche de virtualisation.

 

Docker est également très efficace pour déployer plus de containers. La différence en termes d’occupation par rapport à une VM peut être énorme.

 

Qu’est-ce qu’on peut faire avec un container ?

Ok, donc on a compris en quoi Docker était différent d’une VM, mais quel est l’intérêt d’utiliser ces containers ?

 

La conteneurisation permet de déployer un environnement sur lequel il est possible d’exécuter des processus dans un espace clos, et donc de créer un espace sur lequel il est possible de développer ou tester une application rapidement. Avec Docker il est possible de multiplier les configurations à volonté, et de déployer tout ça rapidement et simplement ! En effet, Docker est une solution efficace pour minimiser le temps et les infrastructures entre le développement, les phases de test, le déploiement et la mise en production d’un projet.

 

Outre la grande facilité qu’offre Docker pour le déploiement d’un environnement développement, il permet aussi de minimiser les coûts de mise en œuvre. Il n’est plus nécessaire d’utiliser un Hyperviseur, ce qui limite l’utilisation de solutions payantes comme pour la virtualisation.

 

L’utilisation d’un « store » permet de trouver facilement et simplement de nombreux conteneurs prêts à déployer. Ce qui accélère un peu plus le déploiement des applications en centralisant le dépôt de composant.

 

Pour conclure sur Docker

Avec Docker, on a vu qu’il est possible de multiplier les environnements très facilement et rapidement, tout en profitant au maximum des ressources de la machine et de l’OS hôte.

Par contre, le fonctionnement même de docker oblige à l’utilisation du NAT pour la partie réseau : votre conteneur n’est pas accessible directement. Cela améliore la sécurité, mais diminue l’accessibilité.

 

La gestion de cluster (nécessaire pour une utilisation dans des environnements de production) est récente, et pour le moment, non robuste.

Recent Posts

Laisser un commentaire

Contactez-nous

Vous avez envie de nous rejoindre ? Alors pourquoi ne pas prendre contact ?

Start typing and press Enter to search

BOOSTEZ VOTRE CARRIERE !

Découvrez comment valoriser vos compétences et développer votre employabilité.
DECOUVRIR LE GUIDE
close-link

Restons connectés 😉

Recevez le meilleur de l'actualité IT et d'ARTKeoS
S'ABONNER
close-link
Shares