Polarys
Docker & conteneurs/Concepts fondamentaux

Concepts fondamentaux

Architecture Docker

Architecture Docker

Docker n'est pas un programme monolithique. Il est composé de plusieurs éléments qui communiquent entre eux. Comprendre cette architecture aide à diagnostiquer les problèmes et à sécuriser le déploiement.

Les composants

graph LR
    CLI[Docker CLI
client]
    API[Docker API
REST]
    D[Docker Daemon
dockerd]
    C[containerd]
    R[runc
OCI runtime]
    IMG[Images
/var/lib/docker]
    REG[Registry
Docker Hub / privé]

    CLI -->|docker run| API
    API --> D
    D --> C
    C --> R
    R -->|crée| CNT[Conteneur]
    D <-->|pull/push| REG
    D --> IMG
  • Docker CLI : le client en ligne de commande (docker run, docker ps...). Envoie des requêtes à l'API.
  • Docker Daemon (dockerd) : le service principal. Gère les images, conteneurs, volumes, réseaux.
  • containerd : runtime de conteneurs de haut niveau (géré par la CNCF, utilisé aussi par Kubernetes).
  • runc : runtime de bas niveau qui crée réellement les conteneurs (namespaces/cgroups).
  • Registry : dépôt d'images (Docker Hub = registre public, possibilité d'un registre privé).

Images vs conteneurs

Image = template en lecture seule (recette)
Conteneur = instance en cours d'exécution d'une image (plat cuisiné)

Une image est composée de layers (couches) en lecture seule. Quand un conteneur démarre, Docker ajoute une couche d'écriture par-dessus.

┌──────────────────┐  ← Couche R/W du conteneur (éphémère)
├──────────────────┤  ← Layer app (votre code)
├──────────────────┤  ← Layer Python 3.11
├──────────────────┤  ← Layer Ubuntu 22.04 base
└──────────────────┘  ← Layer scratch (vide)

Ce système de layers est ce qui rend Docker efficace : si deux images partagent la même base Ubuntu, cette couche n'est téléchargée qu'une seule fois.

Commandes de base

# Vérifier que Docker fonctionne
docker version
docker info

# Tester avec l'image hello-world
docker run hello-world

# Lister les conteneurs en cours
docker ps

# Lister TOUS les conteneurs (y compris arrêtés)
docker ps -a

# Lister les images locales
docker images

Erreurs fréquentes

  • Confondre image et conteneur : une image peut donner des dizaines de conteneurs. Un conteneur n'existe que le temps de son exécution.
  • Lancer Docker sans démarrer le daemon : Cannot connect to the Docker daemon = le service dockerd n'est pas démarré (sudo systemctl start docker).
  • Permissions : sur Linux, l'utilisateur doit être dans le groupe docker pour éviter d'utiliser sudo à chaque commande (sudo usermod -aG docker $USER, puis reconnexion).

À retenir

  • CLI → API → daemon (dockerd) → containerd → runc → conteneur.
  • Image = template layers en lecture seule.
  • Conteneur = image + couche R/W éphémère.
  • Les layers partagés ne sont téléchargés qu'une seule fois → économie d'espace.

Quiz de validation

Quiz - 2 questions

1. Quelle est la différence entre une image Docker et un conteneur ?

2. Pourquoi le système de layers des images Docker est-il efficace ?

Suis ta progression

Crée un compte gratuit pour suivre ta progression et accéder à toutes les leçons.