ajout dev docker
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
# TP2 : Volumes et bind-mounts
|
||||
|
||||
## Exercice 1 : Docker volumes
|
||||
|
||||
### Rapatrier l’image 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
|
||||
```
|
||||

|
||||
|
||||
### 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/
|
||||
```
|
||||
@@ -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 |
@@ -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>
|
||||
@@ -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>
|
||||
@@ -0,0 +1 @@
|
||||
alert("Bienvenue");
|
||||
@@ -0,0 +1,3 @@
|
||||
h1 {
|
||||
color: red;
|
||||
}
|
||||
Reference in New Issue
Block a user