Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 11 additions & 5 deletions exercice-1-port-web/COMMANDS.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
# Commandes

```bash
# Exemple de structure attendue
docker run -d --name web-port -p 8080:80 nginx
```
curl http://localhost:8080
docker port web-port
docker rm -f web-port
docker run -d --name web-port -p 127.0.0.1:8080:80 nginx
docker inspect -f "{{json .Config.ExposedPorts}} {{json .NetworkSettings.Ports}}" web-port
docker rm -f web-port


- Le port conteneur c'est le port dans le conteneur (ex: 80), le port hote c'est celui de ton PC (ex: 8080).
- `EXPOSE` juste "annonce" le port, mais ca l'ouvre pas vers l'exterieur. Pour vraiment publier faut `-p`.
- `127.0.0.1` c'est utile quand tu veux que ca reste local a ta machine (pas accessible depuis le reseau).
20 changes: 15 additions & 5 deletions exercice-2-dns-bridge/COMMANDS.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
# Commandes

```bash
# Exemple de structure attendue
docker network create test_net
```
docker run -d --name serveur --network test_net nginx
docker run --rm --network test_net alpine sh -c "ping -c 1 serveur && wget -qO- http://serveur"
docker network inspect test_net
docker run -d --name serveur-bridge nginx
docker run --rm alpine sh -c "ping -c 1 serveur-bridge || true"
docker network connect test_net serveur-bridge
docker run --rm --network test_net alpine sh -c "ping -c 1 serveur-bridge"
docker network disconnect test_net serveur-bridge
docker rm -f serveur serveur-bridge
docker network rm test_net


- Un reseau perso c'est mieux pour du multi-conteneurs: c'est plus clean, plus previsible, et ca evite les galeres.
- Le DNS interne te permet d'appeler direct par le nom du conteneur (`serveur`) au lieu de courir apres les IP.
- `docker network inspect` te montre qui est connecte, les IP, les alias, bref tout ce qu'il faut pour debug.
30 changes: 25 additions & 5 deletions exercice-3-web-db-network/COMMANDS.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,27 @@
# 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 \
-e MYSQL_ROOT_PASSWORD=rootpass \
-e MYSQL_DATABASE=tpdb \
-v db_volume:/var/lib/mysql \
mysql:8
docker run -d --name webapp --network app_network -p 8080:80 nginx
curl http://localhost:8080
docker network inspect app_network
docker exec mysql_db sh -c 'until mysqladmin ping -h localhost -uroot -p"$MYSQL_ROOT_PASSWORD" --silent; do sleep 1; done'
docker exec mysql_db mysql -uroot -prootpass -e "USE tpdb; CREATE TABLE notes (id INT AUTO_INCREMENT PRIMARY KEY, contenu VARCHAR(255)); INSERT INTO notes (contenu) VALUES ('donnee_persistante');"
docker rm -f mysql_db
docker run -d --name mysql_db --network app_network \
-e MYSQL_ROOT_PASSWORD=rootpass \
-e MYSQL_DATABASE=tpdb \
-v db_volume:/var/lib/mysql \
mysql:8
docker exec mysql_db sh -c 'until mysqladmin ping -h localhost -uroot -p"$MYSQL_ROOT_PASSWORD" --silent; do sleep 1; done'
docker exec mysql_db mysql -uroot -prootpass -e "USE tpdb; SELECT * FROM notes;"
docker rm -f webapp mysql_db
docker network rm app_network
docker volume rm db_volume

- La DB a pas besoin d'etre exposee: seule la webapp doit parler avec, donc on la garde en interne pour la securite.
- Le reseau perso simplifie tout: les services se parlent par nom (`mysql_db`, `webapp`) sans config chelou.
- Si tu recrees MySQL sans reutiliser le volume, tu repars a zero et tu perds les donnees.