# 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 "
SRIVASTAVA-TIAMZON
" >> /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/ ```