Comprendre Docker & son ecosystème

5 décembre 2016/Yahya Al Dhuraibi

La technologie Docker gagne en popularité, elle est adoptée par de plus en plus de fournisseurs de Cloud. D'après une récente étude réalisée par le Club Décision DSI, près de 47% des DSI français envisageraient la virtualisation par container, de type Docker.

Comment fonctionne cette nouvelle technologie ? Qu'apporte-t-elle ?

Cet article a pour objectif de faire toute la lumière sur cette technologie.

1. Qu'est ce que Docker ?

De nos jours, avec l'apparition de Docker, Il devient plus facile d'encapsuler des applications et  leurs dépendances dans des conteneurs Linux très légers, puis de les rendre disponibles en les déployant sur le Cloud.

Docker, nouvelle technologie à containers, est un système de virtualisation légère. Cette technologie est considérée comme une solution virtualisation du système d'exploitation. Ce dernier fournit un ensemble d'espaces d'utilisateurs qui sont isolés les uns des autres et offre un niveau d'abstraction tel que les applications pensent faire partie de l'espace utilisateur unique de l'hôte.

virtualization.png

  Figure 1

2. L'écosystème d'un environnement Docker

Docker est une technologie utilisée pour le développement, l'éxécution et le déploiement des applications packagées dans des containers. Elle utilise une architecture client-serveur.

L'image ci-dessous, montre les composants majeurs d'une installation Docker.

 docker_architecture.png

Figure 2

  • Au centre, Le Docker Host représente la machine physique ou la machine virtuelle dans laquelle Docker Daemon et les containers sont déployés (c.f, Figure 1).
  • Le Docker Daemon est à la fois responsable de la création, du démarrage et du monitoring des containers, mais aussi de la construction et du stockage des images. Le système d'exploitation a la charge de démarrer le Docker Daemon.
  • Le Docker Client se trouve à gauche de l'image. Il communique avec le Docker Daemon via sockets par une API RESTful.  L'objectif du Docker Client est de contrôler l'hôte, créer des images, publier, exécuter et gérer les containers correspondants à l'instanciation de ces images. La communication via HTTP facilite le contrôle des connexions des Docker Daemons. La combinaison des Docker Clients et des Docker Daemons est appelée Docker Engine.
  • Le Docker Registry à droite de l'image, permet de stocker et distribuer des images. Par défaut, le Registry est le Docker Hub, qui détient des milliers d'images publiques. les containers Docker sont crées en utilisant ces images de base. Une image Docker peut soit, inclure simplement les fondamentaux du système d'exploitation, soit consister à une pile d'applications pré-construites et prêtes à être lancées. Pour créer une image, l'option la plus courante est l'écriture d'un fichier de scénarios incluant des commandes diverses et nommé Docker File et de l'executer ensuite. Beaucoup d'entreprises éxécutent leur propre Registry qui peut être utilisé pour stocker des images privées. Le Docker Daemon téléchargera ensuite des images du Registry pour répondre aux différentes demandes.

3. Les avantages qu'offrent Docker

Comparé à un système de virtualisation classique où chaque Machine Virtuelle (VM) exécute son propre système d'exploitation (OS) et peut augmenter l'utilisation de ressources de système, la technologie de conteneurs a plusieurs avantages :

  • Une consommation faible de ressources : Les containers partagent les ressources avec le système d'exploitation, ce qui permet de les rendre plus efficaces. Les containers permettent de diminuer le temps de démarrage, diminuer l'espace de stockage et la consommation du processeur, par rapport au système traditionnel de machines virtuelles.
  • Une accélération du déploiement des applications : Les containers disposent d'un environnement d'éxécution minimal pour les applications, réduisant leur taille et permettant un déploiement plus rapide.
  • Une amélioration de la portabilité des applications : La portabilité des containers permet d'éliminer un nombre important de bugs provoqués par les changements d'environnement d'éxécution et les systèmes propriétaires.
  • Une gestion des ressources simplifiée : Les fonctionnalités cgroups et namespaces dans Docker permettent l'isolation et le management des ressources à l'éxécution.

4. Les limites de Docker

Comme toutes les technologies, Docker a aussi quelques défauts :

  • Les nouveaux containers standards supportent uniquement des environnements 64 bits.
  • La mise en oeuvre de containers nécessite de l'expertise et une base de connaissance solide des ingénieurs.
  • Les containers ne sont pas universels et ne permettent pas de remplacer les machines virtuelles existantes. En effet, les applications dites "legacy", ne sont pas appropriées à la virtualisation. On peut comparer cela aux débuts de la virtualisation, où l'on conservait les méthodes de déploiement existantes sur des environnements physiques.

5. Les usages de Docker 

Comme nous avons mis en évidence, de nombreuses entreprises adoptent la technologie de Docker. L'une des nombreuses raisons à cela, est l'apparition des outils de gestion d'environnements Docker comme Docker-compose, Swarn, Kubernetes et Rancher. 

Ces outils permettent d'automatiser, de gérer et déployer efficacement des clusters Docker.  De plus, les environnements Docker sont parfaits pour déployer des environnements de micro-service qui permettent d'utiliser efficacement les ressources de l'infrastructure. 

Quelques cas d'utilisation de Docker :

  • Simplification de la configuration : Docker a la capacité d'exécuter n'importe quelle plate-forme avec sa propre configuration sur une infrastructure dans une variété d'environnements, sans pour autant utiliser une machine virtuelle. Elle permet d'isoler les applications sur un serveur unique, consolidant ainsi plusieurs serveurs, ce qui impactera sur le coût.
  • Un environnement cohérent pour les applications : Docker permet de fournir un envionnement cohérent à l'application du développement jusqu'à la production, ce qui permet de faciliter son développement ainsi que le pipeline du déploiement., en plus des environnements de tests simplifiés.
Docker fait partie des tendances dans le domaine du Cloud. Va-t-il révolutionner vos infrastructures ?

 

Découvrez pourquoi iDVROOM a choisi un cloud privé Scalair

Yahya Al Dhuraibi
À propos de Yahya Al Dhuraibi : Yahya est Ingénieur de Recherche, il axe actuellement son travail sur l’élasticité du cloud au sein de Scalair et dans les laboratoires de l’Inria, où il prépare son doctorat. Il a obtenu son Bachelor en Sciences de l’informatique à l’université d’Aden (Yémen), puis un master Architecture de Systèmes en Réseaux à l’université d’Evry (France).

À lire ensuite

Les atouts d'une approche hybride pour un Data Warehouse

Pendant des décennies, les entreprises se sont appuyées sur des Data Warehouse "classiques" pour consolider les...

Cloud-native, c’est quoi ?

Le cloud est de plus en plus utilisé. Paradoxalement, il est à l’origine de malentendus. Le Cloud revêt...

Observabilité cloud

La culture de livraison des logiciels évolue. Elle passe de la surveillance à l'observabilité. Celle-ci revêt...