Formation DevOps | Formation Terraform : 21- Les volumes Docker

This website is powered by ItGalaxy.io


Par défaut, les conteneurs Docker sont éphémères. Ils doivent être conçus pour pouvoir être supprimés sans
perdre les données. Pour assurer cette persistance, on utilise les volumes Docker :

  • Ils sont initialisés à la création du container. Si l’image de base contient des données au point de montage
    spécifié, celles-ci sont copiés dans le volume lors de son initialisation
  • Ils peuvent être partagés entre plusieurs containers (exemple : pour créer des clusters de container)
  • Les changements apportés aux données du volume sont pris en compte immédiatement
  • Les données restent sur votre hôte même si le container vient à disparaître

Initialiser un volume (option : - v )

L’utilisation la plus simple est d’initialiser un volume à la création du conteneur :

$ docker run -d -v /var/log –name test_volume debian:latest /bin/sleep

Ici l’option -v /var/log permet d’initialiser un volume indépendant du conteneur qui contiendra les logs du conteneur :

$ docker inspect test_volume
—————-8<——————–
“Mounts”: [
{
“Type”: “volume”,
“Name”: “e566163a0978a34dc1357cb4df7c9d86ddbb308de1c0ba26393e564223ec8c09”,
“Source”: “/var/lib/docker/volumes/e566163a0978a34dc1357cb4df7c9d86ddbb308de1c0
“Destination”: “/var/log”,
“Driver”: “local”,
“Mode”: “”,
“RW”: true,
“Propagation”: "”
—————-8<————-

La commande inspect permet de localiser le volume sur l’arborescence locale de l’hôte ( “Source”) et le point de montage dans le conteneur ( “Destination”)

$ sudo ls /var/lib/docker/volumes/e566163a0978a34dc1357cb4df7c9d86ddbb308de1c0ba26393e5
apt btmp faillog lastlog wtmp

On constate que les fichiers de logs du conteneur sont accessibles dans ce volume.

Partager un dossier entre l’hôte et un conteneur (bind mounts) :

L’autre utilisation des volumes est de partager un dossier entre le conteneur et le système hôte ( exemple : pour qu’un développeur PHP puisse éditer directement les fichiers depuis la machine hôte).

$ mkdir projet-web
$ docker run -d –name test_volume2 -p 8004:80 -v ~/projet-web:/var/www/

Ici nous disposons d’un volume monté sur l’arborescence /var/www/html du conteneur et correspondant au
dossier /home/user (~) de l’hôte :

$ echo “” > ~/projet-web/phpinfo.php

on crée un fichier phpinfo.php directement sur l’arborescence du système hôte. On teste depuis un
navigateur avec l’URL :http://:8004/phpinfo.php que le fichier est bien accédé par le
conteneur.
$ docker inspect test_volume2
—————8<——————–
“Mounts”: [
{
“Type”: “bind”,
“Source”: “/home/formation/projet-web”,
“Destination”: “/var/www/html”,
“Mode”: “”,
“RW”: true,
“Propagation”: “rprivate”
————–8<——————–

la commande inspect permet de visualiser cette configuration du conteneur. “Source” correspond à l’arborescence de l’hôte et “Destination” au point de montage dans le conteneur

Partager un volume de données entre plusieurs conteneurs (option : –volumes-from )

On démarre un conteneur qui “exporte” son arborescence /usr/share/nginx/html dans un volume
$ docker run -d -p 8005:80 -v /usr/share/nginx/html –name test_volume3

On démarre ensuite un conteneur en mode intéractif qui partage le même volume de données
$ docker run -it –volumes-from test_volume3 debian:latest /bin/bash

Depuis ce conteneur on crée un fichier de test (exit pour quitter le conteneur)
root@e232d8d9d527:/# echo bonjour > /usr/share/nginx/html/test.html

On teste depuis un navigateur avec l’URL http://docker-x.univ-rouen.fr:8005/test.html que le fichier est bien
accessible depuis le conteneur test_volume3.

Docker ne supprime pas les volumes à la suppression des conteneurs. Pour éviter l’accumulation de volumes orphelins, il faut utiliser la commande rm avec l’option -v docker rm -v nom_conteneur ou CID ou faire une purge régulière avec la commande docker volume rm $(docker volume ls –qf dangling=true)

TP7 :Plus complexe Pratiquer du Dockerfile avec une application en Php

Construire Dockerfile à partir des consignes suivantes :

  1. A partir de l’image php:7.4-apache
  2. Exposer l’app au port qui correspond à la configuration apache 80.
  3. Lancer la commande /usr/sbin/apache2ctl -D FOREGROUND
  • builder l’mage , lancer le conteneur et vérifier le résultat.

Pratiquer du Volume avec l’ application en Php

  1. on crée un volume pour /var/www/html:.
  2. On modifie le index.html
  3. On vérifie les changements






1. Nous contactez


2. Infra as a Service

  • Description: Infrastructure cloud évolutive et sécurisée
  • Links:

3. Projets Développeurs


4. Développeurs


5. Formations Complètes


6. Marketplace

7. Blogs


This website is powered by ItGalaxy.io