ajout dev docker

This commit is contained in:
EmmanuelTiamzon
2026-06-04 18:57:15 +02:00
parent 2d17b25873
commit d12a1adb6d
34 changed files with 1255 additions and 0 deletions
+80
View File
@@ -0,0 +1,80 @@
# TP2 : Volumes et bind-mounts
## Exercice 1 : Docker volumes
### Rapatrier limage officielle du serveur web apache (httpd)
```shell
[srivasta@salle234-09 TP2]$ docker pull httpd:alpine3.17
alpine3.17: Pulling from library/httpd
f56be85fc22e: Pull complete
3b0762594298: Pull complete
d57f06c5a70c: Pull complete
add4d5bc8a71: Pull complete
ae430e2a98db: Pull complete
36d8ddf7fbf3: Pull complete
Digest: sha256:03c154f29d68648c335a19c8bfca1562251bc8af534e10c6f87361551c381d21
Status: Downloaded newer image for httpd:alpine3.17
docker.io/library/httpd:alpine3.17
```
### Créer un volume
```shell
docker volume create volume_serveur_web #on crée le volume
docker run --rm -v volume_serveur_web:/data alpine sh -c 'echo "<!DOCTYPE html><html><title>C MOI</title><body><h1>Emmanuel</h1></br><p>SRIVASTAVA-TIAMZON</p></body></html>" >> /data/index.html' # On crée le volume qui contient le fichier html demandé.
docker run -d --name volume_serveur_web_stat -v volume_serveur_web:/usr/local/apache2/htdocs/ -p 6767:80 httpd # On crée le volume temporaire qui prend le volume web et on crée le lien qui va avec en respectant les normes
firefox http://localhost:6767/ # On consulte le fichier index.html
```
![Photo de la page web](image.png)
### Démarrer un conteneur
```shell
docker run -d --name tp21 httpd # Démarrer un conteneur en mode détaché nommé tp21
# 933f36f8b9bb2ebac8e1a909d2174023445d6e38abfacd41cb45effdb4453450
docker run -d --name tp22 -v volume_serveur_web:/usr/local/apache2/htdocs/ httpd:alpine3.17 # Démarrer un conteneur en mode détaché en montant le volume précédemment créé nommé tp22
# 28fa428591cbb76279093082f554753b54d0e7c64491d5d1faceb41c5c9ef598
docker run -d --name tp23 -v volume_serveur_web:/usr/local/apache2/htdocs/ -p 8080:80 httpd:alpine3.17 # Démarrer un conteneur en mode détaché en montant le volume précédemment créé et en exposant le port 80 nommé tp23
# 247b80255b2ac69bdb85f76c4c8b8d2423cacd41a5ebdd8e10c791602ce10841
```
### Exercice complémentaire
Créer un deuxième volume nommé backup_web Copier le contenu du premier volume vers ce nouveau volume Démarrer un conteneur tp24 qui monte les deux volumes simultanément.
```shell
docker volume create backup_web # backup_web
docker run -d --name tp24 -v volume_serveur_web:/usr/local/apache2/htdocs/ -v backup_web:/backup httpd:alpine3.17
# 0622eae7a25de9a2d11456e58f48091eda488d3ca7bce813ee872a2ed4adaaf0
```
## Exercice 2 : Docker bind mounts
Pour cet exercice l'arborescence [web](./web) a été crée avec un [index.html](./web/index.html), un [style.jss](./web/style.css) et un [script.js](./web/script.js).
```shell
# Démarrer un conteneur en mode détaché nommé tp25 qui monte le dossier web local dans /usr/local/apache2/htdocs
docker run -d --name tp25 -v "$PWD"/web/:/usr/local/apache2/htdocs httpd:alpine3.17
# 071b845b325823e3720ab0ec89e42f429d1c9dac928ea342fa425b911603f0cb
# Démarrer un conteneur en mode détaché nommé tp26 qui monte le dossier web et expose le port 8080
docker run -d --name tp26 -v "$PWD"/web/:/usr/local/apache2/htdocs/web/ -p 8080:80 httpd:alpine3.17
# 0fe9b31d025df32c42dea857403952ce988fbc7ac858430e64fb837e8ab2fce4
# Démarrer un conteneur en mode détaché nommé tp27 qui monte uniquement le fichier index.html (et non tout le dossier)
docker run -d --name tp27 -v "$PWD"/web/index.html/:/usr/local/apache2/htdocs/index.html httpd:alpine3.17
# 7b0bad50feff61a4d6dd37c17b7d0f0617ec1837bce88583d0794b3c70414064
```
## Exercice complémentaire
```shell
# 1. Modifier le fichier index.html directement sur votre machine
nano/vim web/index.html # pour apporter une modif
# 2. Vérifier que les changements sont visibles dans le conteneur
docker exec tp26 cat /usr/local/apache2/htdocs/index.html
# 3. Créer un nouveau fichier about.html dans le dossier web
touch /web/about.html
# 4. Vérifier qu'il est automatiquement accessible dans le conteneur
docker exec tp26 ls /web/
```
+34
View File
@@ -0,0 +1,34 @@
# Questions de compréhension
1. Quelle est la différence entre un bind mount et un volume Docker ?
Un bind mount utilise les dossiers de la machine host, tandis qu'un volume est un espace de stockage entièrement géré par Docker.
2. Où sont stockés physiquement les volumes Docker sur votre machine ?
Les volumes Docker sont physiquement stockés dans le répertoire protégé /var/lib/docker/volumes/ (sous Windows et Mac, ils sont cachés dans la machine virtuelle gérée par Docker Desktop).
3. Comment lister les volumes existants ?
Pour lister les volumes existants, utilisez la commande suivante : docker volume ls
4. Comment inspecter le contenu d'un volume ?
On peut inspecter le contenu d'un volume simplement avec : docker volume inspect nom_du_volume
Mais pour voir les fichiers à l'intérieur du volume : docker run --rm -v nom_du_volume:/donnees alpine ls -l /donnees
5. Que se passe-t-il pour les données d'un volume quand on supprime le conteneur associé ?
Un volume est indépendant du cycle de vie du conteneur. Même si on stop ou rm le conteneur, le volume et toutes ses données restent intacts sur la machine jusqu'à ce qu'on décide de supprimer avec la commande docker volume rm nom_du_volume.
# Suite questions de compréhension
6. Quand utiliser un bind mount plutôt qu'un volume Docker ?
On utilise un bind mount pour le développement local afin de voir les modifications de code en temps réel, il faut aussi priviligier un volume pour sauvegarder les données de manière sécurisée en production.
7. Peut-on monter plusieurs dossiers dans un même conteneur ?
Oui, en ajoutant simplement plusieurs options -v dans la commande de démarrage.
8. Quelle est la différence entre monter un dossier et monter un fichier unique ?
Monter un dossier fusionne ou remplace tout le contenu du répertoire cible dans le conteneur, alors que monter un fichier unique ne remplace que ce fichier précis en laissant le reste du dossier intact.
9. Les modifications sont-elles bidirectionnelles avec un bind mount ?
Oui, un changement fait sur la machine se répercute instantanément dans le conteneur, et inversement
10. Comment vérifier les bind mounts actifs sur un conteneur ?
Avec docker inspect nom_du_conteneur il faut examiner la section "Mounts" de la réponse pour lister toutes les liaisons en cours
Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

+10
View File
@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Moi</title>
</head>
<body>
<h1>Emmanuel SRIVASTAVA-TIAMZON</h1>
</body>
</html>
+12
View File
@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Moi</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>Emmanuel SRIVASTAVA-TIAMZON</h1>
<p>Petite modification ! (exo complémentaire)</p>
</body>
</html>
+1
View File
@@ -0,0 +1 @@
alert("Bienvenue");
+3
View File
@@ -0,0 +1,3 @@
h1 {
color: red;
}