diff --git a/exercice-1-port-web/COMMANDS.md b/exercice-1-port-web/COMMANDS.md index 3d1111c..6f1e758 100644 --- a/exercice-1-port-web/COMMANDS.md +++ b/exercice-1-port-web/COMMANDS.md @@ -1,6 +1,20 @@ # Commandes ```bash -# Exemple de structure attendue -docker run -d --name web-port -p 8080:80 nginx +docker run -d --name web-port -p 8080:80 nginx +docker port web-port + # 80/tcp -> 0.0.0.0:8080 + # 80/tcp -> [::]:8080 +docker run -d -p 127.0.0.1:8080:80 nginx + # Le EXPOSE décrit quel port doit être utilisé pour le conteneur, la commande le lance concrétement +docker rm -f web-port ``` + +Questions de reflexion +Quelle est la difference entre le port hote et le port conteneur ? +Pourquoi EXPOSE ne suffit-il pas a rendre le service accessible ? +Dans quel cas limiter l'ecoute a 127.0.0.1 est-il utile ? + +- le port hote correspond à celui de la machine, le port conteneur est le port du conteneur par lequel on va passer pour accèder à celui ci +- expose est juste un einstruction à l'utilisateur ce n'est pas une commande +- pour isoler le conteneur des autres \ No newline at end of file diff --git a/exercice-2-dns-bridge/COMMANDS.md b/exercice-2-dns-bridge/COMMANDS.md index 8a05490..d3c5c84 100644 --- a/exercice-2-dns-bridge/COMMANDS.md +++ b/exercice-2-dns-bridge/COMMANDS.md @@ -4,3 +4,21 @@ # Exemple de structure attendue docker network create test_net ``` + +```bash +docker network create test_net +docker run -d --name serveur --network test_net nginx +docker run --rm --network test_net alpine ping -c 3 serveur +docker network inspect test_net +# on peut ping depusi le bridge alors qu'il faut une commande avec le réseau créer +docker run --name test2 alpine & docker network connect test_net test2 +docker network disconnect test_net test2 & docker network disconnect test_net serveur & docker network rm test_net test_net +``` +Questions de reflexion +Pourquoi l'utilisation d'un reseau personnalise est-elle recommandee pour des applications multi-conteneurs ? +Quel avantage apporte le DNS interne Docker ? +Que permet docker network inspect dans une phase de diagnostic ? + +- un réseau personnalisé permet de mieux gérer la communication entre plusieurs conteneurs +- le DNS interne permet à des conteneurs de communiquer simplement par leur nom +- elle permet de voir directement lesinformations précises du réseau \ 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..5fbd1fb 100644 --- a/exercice-3-web-db-network/COMMANDS.md +++ b/exercice-3-web-db-network/COMMANDS.md @@ -1,7 +1,29 @@ # 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 -e MYSQL_ROOT_PASSWORD=rootpassword mysql +docker run -d --name webapp --network app_network -p 8080:80 nginx +docker network inspect app_network #les deux apparaissent bien +docker exec -it mysql_db mysql -uroot -prootpassword +CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50)); +INSERT INTO users (name) VALUES ('Alice'); +SELECT * FROM users; +exit +docker rm -f mysql_db +docker run -d --name mysql_db --network app_network -v db_volume -e MYSQL_ROOT_PASSWORD=rootpassword mysql +docker exec -it mysql_db mysql -uroot -prootpassword +SELECT * FROM users; +exit +docker rm -f mysql_db & docker rm -f webapp & docker network rm app_network & docker volume rm db_volume ``` + +Questions de reflexion +Pourquoi la base de donnees n'a-t-elle pas besoin d'etre exposee vers l'hote dans cette architecture ? +En quoi le reseau personnalise simplifie-t-il la communication entre services ? +Que se passerait-il si le volume n'etait pas reutilise apres recreation du conteneur MySQL ? + +- Parce que les conteneurs se trouvent sur le même réseau docker donc ils peuvent intéragir ensemble avec le DNS +- Avec le DNS qui permet d'appeler les services facilement +- Le conteneur sql démarrerais sans les données précédentes \ No newline at end of file