From 1362da4878bf3be5db030e53ac896a8a1f3352e2 Mon Sep 17 00:00:00 2001 From: abd3l06 Date: Thu, 12 Mar 2026 17:15:54 +0100 Subject: [PATCH] TP networks Abdeslam SITOUAH --- exercice-1-port-web/COMMANDS.md | 11 ++++++++++- exercice-1-port-web/REPONSES.md | 8 ++++++++ exercice-2-dns-bridge/COMMANDS.md | 23 +++++++++++++++++++++- exercice-2-dns-bridge/REPONSES.md | 8 ++++++++ exercice-3-web-db-network/COMMANDS.md | 28 ++++++++++++++++++++++++++- exercice-3-web-db-network/REPONSES.md | 9 +++++++++ 6 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 exercice-1-port-web/REPONSES.md create mode 100644 exercice-2-dns-bridge/REPONSES.md create mode 100644 exercice-3-web-db-network/REPONSES.md diff --git a/exercice-1-port-web/COMMANDS.md b/exercice-1-port-web/COMMANDS.md index 3d1111c..ab70ca1 100644 --- a/exercice-1-port-web/COMMANDS.md +++ b/exercice-1-port-web/COMMANDS.md @@ -3,4 +3,13 @@ ```bash # Exemple de structure attendue docker run -d --name web-port -p 8080:80 nginx -``` + +docker ps + +docker port web-port + +docker rm -f web-port + +docker run -d --name web-port -p 127.0.0.1:8080:80 nginx + +docker rm -f web-port \ No newline at end of file diff --git a/exercice-1-port-web/REPONSES.md b/exercice-1-port-web/REPONSES.md new file mode 100644 index 0000000..a742aed --- /dev/null +++ b/exercice-1-port-web/REPONSES.md @@ -0,0 +1,8 @@ +1. +Le port conteneur est le port utilisé par l'application à l'intérieur du conteneur tendis que le port hôte est celui de la machine qui permet d'accéder au service depuis l'extérieur. + +2. +Parce qu'il sert seulement à indiquer quel port l'application utilise dans l'image. + +3. +Utile pour des tests, et protege l'acces \ No newline at end of file diff --git a/exercice-2-dns-bridge/COMMANDS.md b/exercice-2-dns-bridge/COMMANDS.md index 8a05490..c2b4469 100644 --- a/exercice-2-dns-bridge/COMMANDS.md +++ b/exercice-2-dns-bridge/COMMANDS.md @@ -3,4 +3,25 @@ ```bash # Exemple de structure attendue docker network create test_net -``` + +# Lancer le conteneur serveur sur ce réseau +docker run -d --name serveur --network test-net nginx + +# Tester la résolution DNS depuis un conteneur Alpine +docker run --rm --network test-net alpine ping -c 2 serveur + +# Inspecter le réseau +docker network inspect test-net + +# Test rapide sur le réseau bridge par défaut +docker run --rm --network bridge alpine ping -c 2 serveur + +# Connecter un conteneur existant à chaud +docker run -d --name temp-nginx nginx +docker network connect test-net temp-nginx +docker run --rm --network test-net alpine ping -c 2 temp-nginx + +# Déconnecter le conteneur et supprimer le réseau +docker network disconnect test-net temp-nginx +docker rm -f serveur temp-nginx +docker network rm test-net diff --git a/exercice-2-dns-bridge/REPONSES.md b/exercice-2-dns-bridge/REPONSES.md new file mode 100644 index 0000000..2dcf183 --- /dev/null +++ b/exercice-2-dns-bridge/REPONSES.md @@ -0,0 +1,8 @@ +1. +Pour que les conteneurs puissent communiquer par nom. + +2. +On peut mettre un conteneur avec son nom plutot que son ip + +3. +Sers a voir la configuration du reseau et voir les conteneurs connectes \ No newline at end of file diff --git a/exercice-3-web-db-network/COMMANDS.md b/exercice-3-web-db-network/COMMANDS.md index 9314a5f..f63893d 100644 --- a/exercice-3-web-db-network/COMMANDS.md +++ b/exercice-3-web-db-network/COMMANDS.md @@ -1,7 +1,33 @@ # Commandes ```bash -# Exemple de structure attendue docker network create app_network + docker volume create db_volume + +docker run -d --name mysql_db --network app_network -v db_volume:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root123 -e MYSQL_DATABASE=testdb mysql:8.0 + +docker run -d --name webapp --network app_network -p 8080:80 nginx:latest + +docker network inspect app_network + +docker exec -i mysql_db mysql -uroot -proot123 testdb -e "CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255)); INSERT INTO users (name) VALUES ('Alice Dupont'), ('Bob Martin');" + +docker exec -i mysql_db mysql -uroot -proot123 testdb -e "SELECT * FROM users;" + +docker stop mysql_db + +docker rm mysql_db + +docker run -d --name mysql_db --network app_network -v db_volume:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root123 -e MYSQL_DATABASE=testdb mysql:8.0 + +docker exec -i mysql_db mysql -uroot -proot123 testdb -e "SELECT * FROM users;" + +docker stop webapp mysql_db + +docker rm webapp mysql_db + +docker network rm app_network + +docker volume rm db_volume ``` diff --git a/exercice-3-web-db-network/REPONSES.md b/exercice-3-web-db-network/REPONSES.md new file mode 100644 index 0000000..60dde54 --- /dev/null +++ b/exercice-3-web-db-network/REPONSES.md @@ -0,0 +1,9 @@ +1. +Parce que les conteneurs connectés au même réseau Docker personnalisé peuvent communiquer par leur nom. Seul le service web needs d'être exposé pour l'utilisateur. La base de données reste isolée pour la sécurité. + +2. +Le réseau personnalisé fournit une résolution DNS automatique par nom de conteneur (mysql_db se résout automatiquement), isolant les services et évitant de mapper les ports internes. C'est plus simple que de gérer les adresses IP et ports manuellement. + +3. +Les données seraient perdues. Sans réutiliser le volume, le nouveau conteneur MySQL serait complètement vide. Le volume est ce qui persiste les données au-delà du cycle de vie du conteneur. +