Qu'est-ce qu'un conteneur
Namespaces, cgroups, image immuable, premières commandes.
Objectifs
À la fin de cette leçon, vous saurez :
- expliquer qu'un conteneur est un processus isolé, pas une VM ;
- nommer les mécanismes Linux sous-jacents ;
- exécuter vos premières commandes Docker.
Conteneur ≠ machine virtuelle
VM CONTENEUR
┌──────────────┐ ┌──────────────┐
│ app + libs │ │ app + libs │
│ OS invité │ ← Go ! │ (OS du noyau │
│ hyperviseur │ │ hôte partagé)│
│ OS hôte │ └──────────────┘
│ matériel │
└──────────────┘
La VM embarque un système d'exploitation complet : gigaoctets, démarrage en minutes. Le conteneur est un processus Linux ordinaire, isolé et borné : mégaoctets, démarrage en secondes.
Les trois mécanismes sous-jacents
CONTENEUR = processus
+ filesystem isolé (namespaces, chroot évolué)
+ réseau isolé (namespace réseau propre)
+ limites de ressources (cgroups : CPU, RAM)
- namespaces : chaque conteneur voit SON monde — ses processus, son réseau, ses mounts. Le PID 1 dans le conteneur n'est pas le PID 1 de l'hôte.
- cgroups : plafonds de CPU/mémoire appliqués par le noyau.
- Image immutable : le filesystem de base ne change jamais ; les modifications vivent dans une couche jetable.
Retenez l'idée sans les détails : le noyau hôte fournit des cloisons que Docker manipule pour vous.
Premières commandes
Avant même ces commandes, docker images liste les images déjà présentes localement (nom, tag, taille) — utile pour vérifier qu'une image existe avant un docker run, et pour voir ce que vos builds ont accumulé. Une image absente n'est pas une erreur : Docker ira la télécharger depuis le registre.
| Commande | Effet |
|---|---|
docker run nginx | télécharge si absent puis démarre |
docker run -d -p 8080:80 nginx | détaché + port publié |
docker ps | conteneurs actifs |
docker logs <id> | sa sortie standard |
docker exec -it <id> sh | entrer dedans |
docker stop / rm | arrêter / supprimer |
docker run -d --name web -p 8080:80 nginx
curl localhost:8080 # la page Nginx !
docker exec -it web sh # vous êtes « dans » le conteneur
ls /usr/share/nginx/html # ses fichiers
exit # le conteneur continue de tourner
Exercice
- Lancez nginx, publiez-le, testez au curl depuis l'hôte.
- Entrez dans le conteneur :
ps auxy montre-t-il les processus de l'hôte ? docker inspect web | grep Memory: trouvez ses limites actuelles.
Résumé
- Conteneur = processus cloisonné, léger, jetable.
- Namespaces isolent la vue, cgroups limitent les ressources, image = immuable.
- run/ps/logs/exec/stop/rm : la boîte de base.
Correction disponibleCherchez d’abord par vous-même.Voir la correction
Correction
Réponses détaillées
Question 2. Non : le namespace PID masque tout ce qui est extérieur. Vous voyez seulement sh et ses enfants — l'isolation vue de l'intérieur est totale.