Partie 4 · Conteneurs
Virtualisation, conteneurs et architecture Docker
Docker : une solution pour faciliter les déploiements d'applications et la gestion du dimensionnement de l'infrastructure. Elle embarque une application avec ses dépendances (bibliothèques, middleware) dans un conteneur, ce qui donne flexibilité et portabilité (machine locale, Cloud public ou privé). Bien adapté aux micro-services, à la haute disponibilité, à la scalabilité dynamique et à la transition entre fournisseurs de Cloud.
| Virtualisation | Conteneurisation |
|---|---|
| Un serveur physique héberge un hyperviseur qui abstrait le matériel et offre une interface « virtuelle » | S'appuie sur les fonctionnalités d'isolation du noyau Linux ; un gestionnaire de conteneurs est installé sur l'hôte |
| On instancie des machines sur lesquelles un OS entier est installé | Des conteneurs isolés les uns des autres, mais qui s'exécutent techniquement sur l'hôte |
Vérifie que tu as compris
Pourquoi conteneuriser ? Le problème N × M
N technologies à déployer, M architectures cibles : un problème d'intégration N × M. C'est le même problème qu'en logistique : N formats de produits, M moyens de transport. La solution logistique : le conteneur, un format de chargement qui accueille n'importe quel produit et s'adapte à n'importe quel transport. Docker fait pareil pour les applications : on passe de N × M à N + M (lecture pédagogique, hors cours).
Historique et avantages
- Créé en 2013, s'appuie sur LXC (Linux Containers) et les cgroups du noyau ; $235 millions de financement au total.
- Fonctionne sur un Linux non modifié (contrairement à OpenVZ), facile à installer sur un poste de dev, communauté active, outillage puissant.
Architecture : 3 composants
- Le démon docker : expose une API REST, traite les requêtes de création / mise à jour des conteneurs, images, etc.
- Le client docker (CLI) : parle au démon en ligne de commande.
- Le registry : expose une API REST, stocke les images et leurs couches.
Ce qui isole : namespaces et cgroups
| Namespaces | Cgroups | |
|---|---|---|
| Apparus | 2002 dans le noyau Linux | 2008 dans le noyau Linux |
| Rôle | limiter les accès système des applications | limiter l'usage des ressources |
| Types | pid, net, mnt, uts, ipc, user | cpu, mémoire, réseau, block, device |
Vérifie que tu as compris