Docker

Docker est une plateforme lancée en 2013 qui permet d’exécuter des applications dans des conteneurs. Un conteneur, c’est un peu comme une boîte dans laquelle on place une application et tout ce dont elle a besoin pour fonctionner : bibliothèques, dépendances, configurations… L’objectif est simple : pouvoir lancer cette application partout, sans se soucier des différences entre les machines.

Contrairement à la virtualisation classique, qui fait tourner une machine virtuelle complète avec son propre système d’exploitation, la conteneurisation utilise le système de la machine hôte. Cette approche est beaucoup plus légère, plus rapide au démarrage, et surtout plus facile à déplacer entre différents environnements.

Pourquoi Docker est utile ?

Grâce au conteneur, une application se comporte de la même façon :

  • sur un ordinateur de développeur,
  • sur un serveur en production,
  • dans un cloud, privé ou public,
  • ou même sur une machine complètement différente.

Cela évite le fameux “ça marche chez moi mais pas chez toi”, et facilite énormément les déploiements.

Comment Docker fonctionne ?

Techniquement, Docker s’appuie sur plusieurs briques du noyau Linux, comme :

  • LXC (Linux Containers),
  • cgroups pour gérer les ressources (CPU, RAM, etc.),
  • et les fonctionnalités d’isolation du kernel.

Docker ajoute par-dessus tout ça une API simple et un moteur qui permettent de créer, lancer et gérer les conteneurs de manière intuitive.
Un conteneur Docker ne contient donc pas un système d’exploitation complet : il utilise celui de la machine hôte, ce qui le rend beaucoup plus léger qu’une machine virtuelle.

Docker dans les architectures modernes

La technologie des conteneurs permet de faire tourner des systèmes répartis sur plusieurs machines de manière autonome et scalable. On peut facilement déployer plusieurs instances d’un même service, réparties sur différents serveurs physiques ou virtuels, tout en gardant un comportement identique.

C’est ce qui rend Docker particulièrement intéressant pour :

  • les environnements en microservices,
  • les infrastructures en cloud,
  • les systèmes distribués comme Cassandra ou Riak,
  • et de manière générale, tout projet qui nécessite de la flexibilité, de la portabilité et des déploiements rapides.

One response

Répondre à mephery Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Latest Comments

Latest Posts