# TP3 : Docker Networks & Dockerfile ## Organisation - Créer un dossier `TP3/` - Pour chaque exercice, créer un sous-dossier avec les fichiers requis - Documenter toutes les commandes dans `COMMANDS.md` - Répondre aux questions dans `QUESTIONS.md` ## Livrables attendus - Structure du projet : ``` TP3/ ├── exo1-networks/ │ ├── COMMANDS.md │ └── QUESTIONS.md └── exo2-dockerfile/ ├── Dockerfile ├── COMMANDS.md └── QUESTIONS.md ``` ## Exercice 1 : Docker Networks ### Objectif Comprendre et manipuler les différents types de réseaux Docker et la communication entre conteneurs. ### Actions à réaliser 1. **Création des réseaux** - Créer un réseau de type bridge nommé "bridge-tp3" - Utiliser le réseau prédéfini de type host nommé "host" - Utiliser le réseau prédéfini de type none nommé "none" 2. **Création des conteneurs** - Créer 2 conteneurs nginx (web1, web2) sur bridge-tp3 - Créer 1 conteneur nginx (web3) sur host - Créer 1 conteneur nginx (web4) sur none 3. **Tests de communication** - Tester ping entre web1 et web2 - Tester ping entre web1 et web3 - Tester ping entre web1 et web4 - Tester l'accès HTTP depuis votre machine vers chaque conteneur 4. **Documentation** - Noter toutes les commandes dans COMMANDS.md - Expliquer les résultats dans QUESTIONS.md ### Questions à répondre 1. Expliquer les différences entre les types de réseaux Docker 2. Pourquoi web4 est-il isolé et inaccessible ? 3. Analyser les résultats des tests de communication 4. Pour chaque cas d'usage, quel type de réseau recommanderiez-vous : - Serveur web public - Base de données - Service de cache Redis ## Exercice 2 : Dockerfile ### Objectif Construire une image Docker optimisée pour Apache httpd servant un site web statique. ### Actions à réaliser 1. **Création du Dockerfile** ```dockerfile # Choisir l'OS le plus léger possible # Installer Apache httpd # Définir les labels : # - MAINTAINER: votre_nom # - VERSION: 1.8 # - TP: 3 ``` 2. **Ajout des sources** - Cloner : https://github.com/MaximePIERRONT/beforeStage.git - Personnaliser static-site.html : - Remplacer "NOM PRENOM" par votre nom 3. **Configuration** - Ajouter les variables d'environnement : ``` SCHOOL: IUT LEVEL: 1.8 ``` - Implémenter un healthcheck (intervalle: 1min, timeout: 1s) 4. **Tests et validation** - Builder l'image - Lancer un conteneur - Vérifier : - Le site web est accessible - Les variables d'environnement sont correctes - Le healthcheck fonctionne ### Questions à répondre 1. Pourquoi choisir un OS minimal ? Quels sont les avantages ? 2. Quel est l'intérêt d'utiliser des variables d'environnement ? 3. À quoi sert le healthcheck dans un contexte de production ? 4. Comment pourriez-vous optimiser davantage cette image ? ### Publication sur Docker Hub 1. Créer un compte Docker Hub si nécessaire 2. Tagger l'image : `docker tag local-image username/repository:tag` 3. Pousser l'image : `docker push username/repository:tag` 4. Ajouter le lien Docker Hub dans COMMANDS.md ## Critères d'évaluation - Qualité et clarté des explications dans les fichiers QUESTIONS.md - Précision et exhaustivité des commandes dans COMMANDS.md - Optimisation et bonnes pratiques dans le Dockerfile - Compréhension des concepts de réseaux Docker - Capacité à tester et valider son travail