# Exercice : Docker et les réseaux
## Informations générales
| Élément | Description |
|-----------------------|-------------|
| **Compétences** | Documenter la structure logique et physique de l’environnement dans un schéma de réseau avec des indications spécifiques aux services. |
| **Objectifs** | - Citer de tête les réseaux principaux en lien avec la conteneurisation
- Construire des conteneurs et les mettre en réseaux
- Déterminer dans quelles circonstances tel ou tel réseau est le plus approprié |
| **Durée estimée** | 60 min |
| **Répertoire de travail** | `C:\Docker\docker-network` (Windows) ou `~/docker/docker-network` (Linux) |
| **Fichiers sources** | Aucun |
| **À produire** | - Un document imprimé avec vos observations et réponses |
| **Moyens d’aide** | Le support de cours |
---
## 1. Rappel
⚠️ **Important en cas d'utilisation sous Windows** : le réseau *host* est disponible sous Windows depuis Docker Desktop v4.34. Il faudra donc mettre Docker à jour.
---
## 2. Questions
### 2.1. Les types de réseau Docker
Citez les types de réseau Docker principaux et expliquez dans quel contexte vous les utiliseriez :
*(réponse attendue : bridge, host, none, overlay …)*
---
### 2.2. Commandes de base
Quelles sont les commandes pour :
- lister les réseaux
- inspecter un réseau en particulier
- lister les conteneurs
- inspecter les conteneurs
---
## 3. Échauffement
### 3.1. Préparation d’une image « Boîte à outils réseau »
Écrire un script pour créer une image de conteneur avec les caractéristiques suivantes :
- Point de départ : dernière image **Ubuntu**
- Paquets installés : `nmap`, `iproute2`, `iputils-ping`
- **Bash** doit être la commande par défaut
➡️ L’image doit être construite et taguée `network-utils:latest`.
- Notez ci-dessous le contenu du script :
```dockerfile
# Exemple de script à compléter
FROM ubuntu:latest
RUN apt-get update && apt-get install -y nmap iproute2 iputils-ping
CMD ["tail", "-f", "/dev/null"]
```
- Détaillez les étapes que vous avez effectuées :
---
### 3.2. Création d’un réseau bridge
Commande pour créer un réseau `bridge` nommé `mon_bridge`, avec le sous-réseau `192.168.7.0/24`.
---
### 3.3. Création d’un réseau host
Commande pour créer un réseau `host` nommé `my_host`, avec le sous-réseau `192.168.19.0/24`.
---
### 3.4. Création d’un bridge isolé (sans accès Internet)
Commande pour créer un réseau `bridge` nommé `isolated_bridge`, avec le sous-réseau `192.168.20.0/24`.
---
## 4. Cas pratique 1
Mettre en place la configuration demandée (compléter le schéma avec les adresses IP importantes).

- Notez toutes les commandes utilisées :
- Partagez vos observations :
---
## 5. Cas pratique 2
Mettre en place la configuration demandée (compléter le schéma avec les adresses IP importantes).

- Notez toutes les commandes utilisées :
- Partagez vos observations :
---
## 6. Cas pratique 3
Mise en place de la configuration suivante :

- Le conteneur **nginx1** doit utiliser la dernière image officielle `nginx`.
- Il doit mettre à disposition une page `index.html` dont le contenu est `Hello les devs !`.
- L'hòte doit voir la page index avec une redirection de port (8080 vers 80)
- Notez toutes les commandes utilisées :
- Partagez vos observations :
---
## 7. Cas pratique 4
Mettre en place la configuration demandée.

- Notez toutes les commandes utilisées :
- Partagez vos observations :
---
## 8. Compréhension des différences entre bridge par défaut et bridge créé
À partir du cas pratique 4 :
- ajoutez un nouveau réseau `bridge` nommé `new_bridge` avec le sous-réseau `192.168.55.0/24`.
- avec vos outils réseau, comparez le comportement du `bridge` par défaut et du `bridge` créé par un utilisateur.
- Notez vos observations et différences constatées :
---