Concepts fondamentaux des containers
Avant d'utiliser Docker ou Podman, il est essentiel de comprendre ce qu'est un container, comment il fonctionne et en quoi il diffère d'une machine virtuelle. Cette page pose les bases nécessaires pour aborder la conteneurisation de manière claire et durable.
Qu’est-ce qu’un container ?
Un container est une unité d'exécution légère qui embarque une application ainsi que toutes ses dépendances (bibliothèques, binaires, configuration), tout en partageant le noyau du système hôte.
Contrairement à une machine virtuelle, un container :
- ne contient pas de système d'exploitation complet
- s'appuie directement sur le noyau Linux de l'hôte
- démarre très rapidement
- consomme peu de ressources
Sur Linux, les containers reposent principalement sur :
- les namespaces (isolation des processus, du réseau, du système de fichiers, etc.)
- les cgroups (limitation et contrôle des ressources)
Note
Les containers ne sont pas une technologie nouvelle. Docker a surtout permis de les rendre accessibles, standardisés et simples à utiliser.
Container vs Machine virtuelle
Les containers et les machines virtuelles répondent à des besoins similaires, mais avec des approches très différentes.
Machine virtuelle
- émule un matériel complet
- embarque un système d'exploitation invité
- isolation forte
- consommation importante en CPU, mémoire et stockage
Container
- partage le noyau de l'hôte
- isolation au niveau du système
- très léger et rapide
- idéal pour le déploiement applicatif
| Critère | Machine virtuelle | Container |
|---|---|---|
| Noyau | Propre à chaque VM | Partagé |
| Démarrage | Lent | Quasi instantané |
| Consommation | Élevée | Faible |
| Usage principal | Infrastructure complète | Application |
Info
Les containers ne remplacent pas les machines virtuelles. Ils sont souvent utilisés à l’intérieur de VMs dans les infrastructures modernes.
Image, container et registry
La conteneurisation repose sur trois notions clés.
Image de container
Une image est un modèle immuable qui décrit :
- le système de fichiers
- les dépendances
- les commandes à exécuter
Une image ne s'exécute pas. Elle sert de base à la création d’un container.
Exemples d'images courantes :
nginxpostgresredis
Note
Une image est versionnée et peut être reconstruite à l'identique, ce qui garantit la reproductibilité.
Container
Un container est une instance en cours d'exécution (ou arrêtée) d'une image.
On peut :
- démarrer plusieurs containers à partir d'une même image
- supprimer un container sans impacter l'image
- recréer un container à l'identique
Warning
Les containers sont éphémères par nature. Les données persistantes doivent être stockées via des volumes ou des montages externes.
Registry
Un registry est un dépôt centralisé d'images de containers.
Il permet de :
- stocker des images
- les versionner
- les distribuer
Exemples de registries :
- (Docker Hub)[https://hub.docker.com/]
- registries privés d'entreprise (Portnair, ...)
- registries intégrés aux plateformes CI/CD (Gitlab Registry, ...)
Flux classique :
- construction d'une image
- envoi vers un registry
- téléchargement et exécution sur un autre système
Pourquoi utiliser des containers ?
Les containers répondent à des problématiques concrètes :
- cohérence entre développement, test et production
- déploiement rapide et reproductible
- isolation des applications
- meilleure utilisation des ressources
- simplification de l'exploitation
Ils constituent aujourd'hui une brique de base des infrastructures modernes, que ce soit avec Docker, Podman ou des orchestrateurs plus avancés.
Et ensuite ?
Une fois ces concepts acquis, il devient naturel de passer à la pratique.
La suite de cette documentation se concentre sur :
- l’utilisation de Docker
- la gestion des images et containers
- les volumes, réseaux et bonnes pratiques
- puis Podman comme alternative moderne et sécurisée