# TP3 Docker Networks - Commandes

## 1. Création des réseaux

### Création d'un réseau bridge personnalisé
```bash
docker network create bridge-tp3
```

### Visualisation des réseaux disponibles
```bash
docker network ls
```

## 2. Création des conteneurs

### Création des conteneurs sur le réseau bridge-tp3
```bash
docker run -d --name web1 --network bridge-tp3 nginx
docker run -d --name web2 --network bridge-tp3 nginx
```

### Création d'un conteneur sur le réseau host
```bash
docker run -d --name web3 --network host nginx
```

### Création d'un conteneur sur le réseau none
```bash
docker run -d --name web4 --network none nginx
```

### Vérification des conteneurs créés
```bash
docker ps
```

## 3. Tests de communication

### Installation de ping dans les conteneurs
```bash
docker exec web1 apt-get update
docker exec web1 apt-get install -y iputils-ping
docker exec web2 apt-get update
docker exec web2 apt-get install -y iputils-ping
docker exec web3 apt-get update
docker exec web3 apt-get install -y iputils-ping
```
Note: L'installation de ping sur web4 (réseau none) ne fonctionnera pas car il n'a pas d'accès réseau.

### Récupération des adresses IP des conteneurs
```bash
docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' web1
docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' web2
docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' web3
docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' web4
```

### Test de ping entre web1 et web2
```bash
docker exec web1 ping -c 4 web2
```

### Test de ping entre web1 et web3 (par IP hôte)
```bash
# Remplacer HOST_IP par l'adresse IP de votre machine hôte
docker exec web1 ping -c 4 HOST_IP

# Dans mon cas : 
docker exec web1 ping -c 4 172.16.3.195
```

### Test de ping entre web1 et web4
```bash
# Ce test échouera car web4 n'a pas de réseau
# Nous aurons besoin de l'adresse IP de web4, mais comme il est sur le réseau none, il n'en a pas
```

### Test d'accès HTTP

#### Accès à web1
```bash
# Exposer le port de web1 si ce n'est pas déjà fait
docker stop web1
docker run -d --name web1 -p 8081:80 --network bridge-tp3 nginx
# Tester l'accès
curl http://localhost:8081
```

#### Accès à web2
```bash
# Exposer le port de web2
docker stop web2
docker run -d --name web2 -p 8082:80 --network bridge-tp3 nginx
# Tester l'accès
curl http://localhost:8082
```

#### Accès à web3 (réseau host)
```bash
# web3 utilise directement le port 80 de l'hôte, donc il faut s'assurer qu'il n'est pas déjà utilisé
curl http://localhost:80
# ou simplement
curl http://localhost
```

#### Accès à web4 (réseau none)
```bash
# Ce test échouera car web4 n'a pas de connectivité réseau
# Il n'est pas possible d'accéder à un conteneur sur le réseau none depuis l'extérieur
```

## 4. Nettoyage

### Arrêt et suppression des conteneurs
```bash
docker stop web1 web2 web3 web4
docker rm web1 web2 web3 web4
```

### Suppression du réseau personnalisé
```bash
docker network rm bridge-tp3
```