Syllabus
Syllabus¶
Site en construction
Toutes les pages existent ; celles marquées « Under construction » sont en cours de rédaction et seront complétées au fil de l'avancement du cours.
Fiche d'identification¶
| Rubrique | Description |
|---|---|
| Intitulé | Docker : conteneurisation, orchestration et industrialisation d'applications |
| Public | Master DevOps et Cloud Computing, semestre 1 |
| Volume horaire | 45 h (15 séances de 3 h : environ 15 h de cours, 30 h de TP) |
| Crédits | 3 ECTS |
| Prérequis | Linux en ligne de commande, réseau (TCP/IP, DNS), notions de développement ; aucune expérience des conteneurs requise |
| Outils de TP | Docker Engine ou Docker Desktop, au choix : Docker Desktop (Windows), Ubuntu Desktop ou Ubuntu Server (VM VMware Workstation) ; 3 VM Ubuntu pour le cluster Swarm (chapitres 11, 12 et 14) ; Docker Hub et GitHub (chapitres 4 et 13) ; voir l'annexe Environnement de travail |
Objectif général¶
Concevoir, construire, distribuer, sécuriser et exploiter des applications conteneurisées avec Docker, les orchestrer avec Docker Compose et Docker Swarm, puis automatiser leur livraison par un pipeline CI/CD.
Acquis d'apprentissage¶
À la fin du cours, l'étudiant est capable de :
- AA1 : expliquer le fonctionnement des conteneurs et l'architecture de Docker (comprendre)
- AA2 : créer, exécuter et gérer le cycle de vie des conteneurs (appliquer)
- AA3 : construire, versionner et distribuer des images via des registres (appliquer)
- AA4 : gérer la persistance des données et le réseau des conteneurs (appliquer)
- AA5 : orchestrer une application multi-conteneurs avec Docker Compose (créer)
- AA6 : superviser et diagnostiquer des conteneurs en exploitation (analyser)
- AA7 : optimiser et sécuriser des images et des conteneurs (analyser)
- AA8 : déployer et exploiter une application sur un cluster Docker Swarm (appliquer)
- AA9 : automatiser la construction, les tests et la livraison par un pipeline CI/CD (créer)
Compétences visées¶
Conteneurs (namespaces, cgroups, normes OCI), images et couches, registres, volumes, réseaux Docker, Compose, modèle de sécurité des conteneurs, architecture de Swarm (managers, workers, services, stacks), principes CI/CD.
Maîtrise de la ligne de commande Docker, écriture de Dockerfile et de fichiers Compose, publication d'images, diagnostic et supervision de conteneurs, durcissement et analyse de vulnérabilités, administration d'un cluster Swarm, pipelines GitHub Actions.
Rigueur et reproductibilité, esprit critique sur la sécurité, autonomie, travail en équipe, veille technologique.
Organisation du cours¶
Partie 1 : Fondations (12 h)¶
| Chapitre | Contenu | Ressources |
|---|---|---|
| 1. Introduction aux conteneurs (AA1) | Conteneur et machine virtuelle, namespaces et cgroups, architecture de Docker (client, daemon, containerd, runc), normes OCI, choix de l'environnement de TP | Cours · Lab 1.1 : Installer Docker · Lab 1.2 : Premiers conteneurs · Quiz |
| 2. Cycle de vie des conteneurs (AA2) | Commandes run, ps, stop, rm, publication de ports, variables d'environnement, logs, exec, inspect, limites de ressources de base | Cours · Lab 2.1 : Gérer le cycle de vie · Lab 2.2 : Publier et configurer un service · Quiz |
| 3. Images et Dockerfile (AA3) | Couches et système de fichiers en union, instructions du Dockerfile, build, cache de construction, tags, .dockerignore | Cours · Lab 3.1 : Écrire un premier Dockerfile · Lab 3.2 : Cache et couches · Quiz |
| 4. Registres et distribution (AA3) | Rôle d'un registre, Docker Hub, nommage et tags, versionnage des images, registre privé | Cours · Lab 4.1 : Publier sur Docker Hub · Lab 4.2 : Déployer un registre privé · Quiz |
| Mini-projet 1 | Conteneuriser et publier une application web | Énoncé |
Partie 2 : Données, réseau et exploitation (12 h)¶
| Chapitre | Contenu | Ressources |
|---|---|---|
| 5. Volumes et persistance (AA4) | Volumes nommés, bind mounts, tmpfs, cycle de vie des données, sauvegarde et restauration | Cours · Lab 5.1 : Persister des données · Lab 5.2 : Sauvegarder et restaurer un volume · Quiz |
| 6. Réseau Docker (AA4) | Pilote bridge, réseaux définis par l'utilisateur, DNS interne, publication de ports, modes host et none | Cours · Lab 6.1 : Réseaux et résolution DNS · Lab 6.2 : Isoler une application par réseaux · Quiz |
| 7. Docker Compose (AA5) | Services, réseaux et volumes dans un fichier compose, variables et fichier .env, healthchecks, dépendances entre services | Cours · Lab 7.1 : Première pile Compose · Lab 7.2 : Application trois niveaux avec Compose · Quiz |
| 8. Observabilité et dépannage (AA6) | Logs, stats, events, limites de ressources, healthchecks, démarche de diagnostic, entretien du moteur (espace disque, nettoyage) | Cours · Lab 8.1 : Superviser une pile applicative · Lab 8.2 : Dépanner des pannes imposées · Quiz |
| Mini-projet 2 | Pile applicative persistante, cloisonnée et supervisée | Énoncé |
Partie 3 : Durcissement et orchestration Swarm (12 h)¶
| Chapitre | Contenu | Ressources |
|---|---|---|
| 9. Optimisation des images (AA7, AA3) | Construction multi-stage, BuildKit, images minimales, comparaison de taille et de temps de construction | Cours · Lab 9.1 : Construire avec multi-stage · Lab 9.2 : Réduire et comparer des images · Quiz |
| 10. Sécurité des conteneurs (AA7) | Utilisateur non root, système de fichiers en lecture seule, capabilities, gestion des secrets, analyse de vulnérabilités des images | Cours · Lab 10.1 : Durcir un conteneur · Lab 10.2 : Analyser et corriger une image · Quiz |
| 11. Swarm : cluster et services (AA8) | Pourquoi orchestrer, architecture managers et workers, initialisation et adhésion, services répliqués et globaux, routing mesh, mise à l'échelle, maintenance d'un nœud | Cours · Lab 11.1 : Créer un cluster Swarm · Lab 11.2 : Déployer et mettre à l'échelle des services · Quiz |
| 12. Swarm : stacks et exploitation (AA8) | Réseaux overlay, stacks à partir d'un fichier Compose, configs et secrets Swarm, mises à jour progressives et retour arrière, contraintes de placement, tolérance aux pannes, comparaison avec Kubernetes | Cours · Lab 12.1 : Déployer une stack · Lab 12.2 : Mises à jour, secrets et panne d'un nœud · Quiz |
| Mini-projet 3 | Application sécurisée sur un cluster Swarm | Énoncé |
Partie 4 : Industrialisation (9 h)¶
| Chapitre | Contenu | Ressources |
|---|---|---|
| 13. Intégration continue (AA9) | Principes CI/CD, GitHub Actions, pipeline de construction, tests, publication versionnée d'une image | Cours · Lab 13.1 : Pipeline de construction d'image · Lab 13.2 : Tests et publication versionnée · Quiz |
| 14. Livraison continue (AA9, AA8) | Déploiement automatisé sur le cluster Swarm, gestion des versions, retour arrière automatisé | Cours · Lab 14.1 : Déploiement automatisé sur Swarm · Lab 14.2 : Pipeline complet avec retour arrière · Quiz |
| 15. Synthèse et ouverture vers Kubernetes (AA1 à AA9) | Bilan des acquis, bonnes pratiques de bout en bout, limites de Swarm, passage vers Kubernetes | Cours |
Projet final¶
Plateforme conteneurisée, sécurisée et livrée par pipeline
Méthodes pédagogiques¶
Cours interactifs courts, TP guidés puis de plus en plus autonomes, études de cas de pannes, mini-projets en binôme à la fin de chaque partie, projet final en binôme avec soutenance. Les étudiants choisissent leur environnement de TP parmi trois options classées par niveau de complexité.
Évaluation¶
| Modalité | Pondération |
|---|---|
| Contrôle continu : TP et quiz | 30 % |
| Mini-projets (15 %) et projet final (25 %) | 40 % |
| Examen pratique chronométré | 30 % |
Références¶
- Documentation officielle Docker : docs.docker.com
- Documentation de GitHub Actions : docs.github.com/actions
- Open Container Initiative : opencontainers.org