114 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			114 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								# 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
							 |