Docker est la plateforme de conteneurisation la plus populaire. Elle permet d'empaqueter une application et ses dépendances dans un conteneur isolé, facilitant le déploiement et la portabilité.
| Caractéristique | Conteneur | VM |
|---|---|---|
| Isolation | Niveau OS (namespace, cgroups) | Niveau matériel (hyperviseur) |
| Démarrage | Quelques millisecondes | Plusieurs secondes |
| Empreinte | Légère (Mo) | Lourde (Go) |
| Portabilité | Très bonne | Bonne |
Docker fournit un script d'installation officiel (convenience script) qui détecte la distribution et installe automatiquement Docker Engine, la CLI et le plugin Compose. Recommandé pour les tests et environnements de formation (à éviter en production, où l'installation via le dépôt APT/YUM officiel est préférable).
curl -fsSL https://get.docker.com -o install-docker.shsudo sh install-docker.shdocker --version et docker compose versionsystemctl enable docker && systemctl start dockerusermod -aG docker $USER puis se reconnecter.Toujours inspecter un script avant de l'exécuter en root : cat install-docker.sh ou less install-docker.sh. C'est une bonne pratique de sécurité à faire acquérir aux étudiants, même pour un script officiel Docker.
docker pull, docker run, docker ps, docker stop, docker rmFROM python:3.9-slim ; COPY app.py /app.py ; CMD ["python", "/app.py"]docker volume create, docker run -v volume:/cheminChaque conteneur possède sa propre interface réseau virtuelle. Docker s'appuie sur les fonctionnalités réseau du noyau Linux (bridges virtuels, iptables, network namespaces) pour interconnecter, isoler et exposer les conteneurs.
| Driver | Principe | Cas d'usage |
|---|---|---|
| bridge (défaut) | Réseau virtuel privé sur l'hôte, NAT vers l'extérieur. | Cas général, conteneurs sur une même machine. |
| host | Le conteneur partage directement la pile réseau de l'hôte (pas d'isolation). | Performance maximale, pas de NAT. |
| none | Aucune interface réseau (hors loopback). | Conteneurs totalement isolés du réseau. |
| overlay | Réseau virtuel multi-hôtes (via Swarm/Kubernetes). | Clusters, communication entre plusieurs hôtes Docker. |
| macvlan | Le conteneur reçoit une adresse MAC/IP propre sur le réseau physique. | Le conteneur doit apparaître comme un hôte à part entière du LAN. |
docker network lsdocker network create mon-reseaudocker network inspect mon-reseaudocker network connect mon-reseau conteneur / docker network disconnectdocker network rm mon-reseaudocker network create --internal reseau-priveUn réseau Docker personnalisé permet de segmenter une application : par exemple, une base de données peut être placée sur un réseau --internal non joignable depuis l'extérieur, et seul le conteneur applicatif y a accès — un principe proche de la segmentation VLAN vue en architecture réseau.
docker compose up -d, docker compose downExécuter un conteneur Nginx :
docker run -d --name web -p 8080:80 nginx:alpine
-d : détaché (arrière-plan).--name web : nom du conteneur.-p 8080:80 : redirige le port 8080 de l'hôte vers le 80 du conteneur.nginx:alpine : image légère de Nginx.Créer une image pour une application Python simple :
# Dockerfile FROM python:3.9-slim COPY app.py /app.py CMD ["python", "/app.py"]
FROM : image de base.COPY : copie le fichier.CMD : commande par défaut.Objectif : vérifier que deux conteneurs peuvent se joindre par leur nom sur un réseau bridge personnalisé.
docker network create appnet docker run -d --name serveur --network appnet nginx:alpine docker run -it --name client --network appnet alpine ping -c 3 serveur
docker network create appnet : crée un réseau bridge personnalisé avec DNS interne.appnet via --network.client peut résoudre et joindre serveur par son nom — impossible avec le réseau bridge par défaut.docker run sans --network (bridge par défaut) pour observer l'échec du ping par nom.Objectif : placer une base de données sur un réseau interne inaccessible depuis l'extérieur, joignable uniquement par le conteneur applicatif.
docker network create --internal backend-net docker network create frontend-net docker run -d --name db --network backend-net -e POSTGRES_PASSWORD=secret postgres:16-alpine docker run -d --name app --network backend-net --network frontend-net -p 8080:8080 mon-app:latest
--internal : le réseau backend-net n'a pas de sortie vers Internet ni d'accès direct depuis l'hôte.db n'est joignable que depuis backend-net, donc uniquement par app.app est connecté aux deux réseaux : backend-net pour parler à la base, frontend-net pour exposer le port 8080.Quelle commande permet de lister les conteneurs en cours d'exécution ?
docker ps
Quelle commande démarre une application Docker Compose en arrière-plan ?
docker compose up -d
Pourquoi est-il recommandé de créer un réseau bridge personnalisé plutôt que d'utiliser le réseau bridge par défaut ?
Un réseau personnalisé fournit une résolution DNS automatique par nom de conteneur, ce que ne permet pas le réseau bridge par défaut (seule l'adresse IP y fonctionne). Il permet aussi de mieux isoler les applications entre elles.
1. Un conteneur Docker utilise les fonctionnalités du noyau Linux :
2. La commande docker run permet de :
3. Un Dockerfile contient des instructions pour :
4. Les volumes Docker permettent de :
5. Docker Compose utilise un fichier :
6. Sur quel type de réseau les conteneurs peuvent-ils se résoudre entre eux par leur nom ?
7. L'option --internal d'un réseau Docker sert à :