Aller au contenu

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 :

  • nginx
  • postgres
  • redis

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 :

  1. construction d'une image
  2. envoi vers un registry
  3. 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