Introduction aux Conteneurs

Concepts et Historique de la Conteneurisation

Université de Toulon

LIS UMR CNRS 7020

2026-01-20

Objectifs du cours

À l’issue de ce cours, vous devez être capables de :

  • Comprendre l’évolution Physique → VM → Conteneurs
  • Expliquer la différence entre machine virtuelle et conteneur
  • Utiliser une image pour créer un conteneur
  • Créer une image simple avec un Dockerfile

Ce cours est une introduction conceptuelle. Les pratiques et usages avancés seront abordés dans les TP et cours suivants.

Rappel minimal : Ordinateur et Système d’exploitation

Objectif Comprendre ce qui est virtualisé, partagé ou isolé.

Architecture simplifiée

Applications
────────────
Système d’exploitation (Kernel)
────────────
Matériel (CPU, RAM, Disque, Réseau)

Rôle du noyau (kernel)

  • Gestion des processus
  • Gestion de la mémoire
  • Accès au matériel
  • Sécurité et isolation

Astuce

Toute application passe par le noyau pour accéder aux ressources.

Objectifs de la Virtualisation

La virtualisation répond à deux problèmes simples :

  • comment mieux exploiter le matériel disponible ?
  • comment isoler les applications ?

Historique de la Virtualisation

Ère Physique (1990–2000)

  • Infrastructure

    • Serveurs dédiés mono-usage
    • Faible utilisation CPU
    • Scalabilité verticale uniquement
  • Contraintes

    • Coûts élevés
    • Déploiements lents
    • Maintenance complexe
    • Conflits de dépendances

Ère Virtuelle (2000–2010)

  • Technologies

    • Hyperviseurs : VMware ESX, Hyper-V
    • Open Source : KVM, Xen
  • Bénéfices

    • Consolidation des serveurs
    • Isolation forte
    • Portabilité des VMs
    • Haute disponibilité

Architecture de la Virtualisation

graph TB
H[Hyperviseur] --> V[Machines Virtuelles]
V --> R[Ressources Virtuelles]

R --> CPU[vCPU]
R --> RAM[vRAM]
R --> DISK[vDisk]
R --> NET[vNIC]

Astuce

Une machine virtuelle embarque un OS complet.

Hyperviseurs et Technologies

  • CPU : Intel VT-x / AMD-V

  • Mémoire : EPT / NPT

  • I/O : SR-IOV, NVMe-oF

  • Stockage : VMDK, QCOW2, SAN

  • Type 1 (Bare Metal) : ex. VMware ESX

    • Direct sur le matériel
    • Performances élevées
  • Type 2 (Hosted) : ex. VirtualBox, VMware Workstation

    • Sur OS existant
    • Simplicité d’usage

Des Machines Virtuelles

graph TD
HW[Hardware] --> ESX[Hyperviseur]
ESX --> VM1[VM Linux]
ESX --> VM2[VM Linux]
ESX --> VM3[VM Windows]

  • Chaque VM a son propre OS
  • Isolation forte via l’hyperviseur
  • Ressources allouées statiquement
  • Démarrage lent et consommation mémoire élevée

Bilan sur les Machines Virtuelles

Avantages

  • Isolation forte
  • Snapshots
  • Migration

Inconvénients

  • OS complet par VM
  • Démarrage lent
  • Consommation mémoire

L’Émergence des Conteneurs (2010+)

Les conteneurs ne virtualisent pas une machine, mais isolent des processus.

Fonctionnalités clés du noyau Linux

  1. Namespaces

    • PID, Network, Mount, UTS
  2. cgroups

    • Limitation CPU
    • Limitation mémoire
    • Comptabilisation

Astuce

Un conteneur est une illusion d’isolation contrôlée par le noyau.

Chronologie

timeline
  2000 : FreeBSD Jails : premiers conteneurs OS-level
  2007 : cgroups et Namespaces Linux : bases des conteneurs
  2008 : LXC : premiers conteneurs Linux
  2013 : Docker : popularisation des conteneurs
  2017 : Kubernetes : orchestration
  2020 : OCI Standards : image et runtime
  2024 : CRI-O, Podman : alternatives à Docker

Machines Virtuelles vs Conteneurs

Critère VM Conteneur
Isolation “Matérielle” Noyau
OS Complet Partagé
Démarrage Minutes Secondes
Taille Go Mo
Usage Legacy Cloud-native

Astuce

VM = virtualisation de machine Conteneur = virtualisation de processus

Philosophie et grands principes des conteneurs

Les conteneurs sont une approche d’isolation de processus plutôt qu’une virtualisation de machine.

Principes clés

  • Isolation Chaque conteneur a son propre espace de processus, réseau et système de fichiers.

  • Légèreté Pas d’OS complet : seulement les dépendances nécessaires à l’application.

  • Immutabilité Une image est un artefact immuable : le même contenu donne le même conteneur.

  • Éphémérité Un conteneur est conçu pour être démarré, arrêté, détruit rapidement.

  • Portabilité Une image fonctionne de manière identique partout (dev, test, prod, cloud).

Message central

Un conteneur est une unité de déploiement : un processus principal isolé, reproductible, portable et facilement orchestrable.

Docker et Conteneurs

  • Docker Inc. fondé en 2010

  • Docker est une plateforme complète qui popularise l’usage des conteneurs

  • Il fournit :

    • Un format d’image
    • Un système de build
    • Un registre
    • Une CLI simple

Avertissement

Docker n’est pas le conteneur Docker est un ensemble d’outils (maintenant basé sur des standards) .

Docker et standards OCI

  • Standardisation en 2015 (OCI)

    • Image Specification
    • Runtime Specification
    • Distribution Specification
  • Alternatives à Docker

    • Bas niveau
      • runc : runtime de référence
      • containerd : runtime de conteneurs
    • Haut niveau
      • CRI-O : runtime pour Kubernetes
      • Podman : gestion

Concepts Fondamentaux

Image

  • Template immuable
  • Lecture seule
  • Distribuable
  • Couches de système de fichiers empilées

Conteneur

  • Processus isolé
  • Ressources limitées
  • État éphémère

Utilisation d’une image

docker run --detach \
  --name my_web_server \
  --publish 8080:80 \
  --volume /var/www:/usr/share/nginx/html \
  nginx

Ce que fait réellement docker run

  1. Télécharge l’image depuis un registre
  2. Crée un système de fichiers isolé
  3. Configure réseau et volumes (stockage de données externes)
  4. Lance le processus principal

Création d’une image

  • Définie via un fichier Dockerfile
  • Instructions pour construire l’image
  • Exemple simple pour une application Python
FROM python:3.9-slim

WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .
CMD ["python", "app.py"]
  • Construire l’image avec la commande :
docker build -t myapp:0.1.0 .

Astuce

Une image n’est pas une VM Elle contient uniquement ce qui est nécessaire à l’application.

Gestion de base

docker image pull nginx
docker image ls
docker container ls -a
docker container rm web

Shell et inspection

docker run -it ubuntu
docker exec -it web bash
docker logs web
docker stats

Nettoyage

docker system prune
docker system prune -a

Composants standards

Docker CLI

Docker Engine

containerd

runc

Linux Kernel

Orchestration (aperçu)

  • Docker Compose

    • Développement
    • Applications simples
  • Kubernetes

    • Production
    • Scalabilité
    • Résilience

Docker Compose ≠ Kubernetes “en petit”

Conclusion

  • Les conteneurs complètent la virtualisation
  • Ils apportent rapidité, portabilité et standardisation
  • Docker est un point d’entrée, pas une finalité
  • Kubernetes s’impose comme standard d’orchestration

Astuce

Un conteneur n’est pas un mini-serveur C’est un processus isolé et maîtrisé