Files

80 lines
4.0 KiB
Markdown
Raw Permalink Normal View History

2026-06-04 18:57:15 +02:00
# 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/
```