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 |