Formation Devops | Formation Docker : 31- les volumes Docker
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 –nametest_volumedebian: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 inspecttest_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”)
$ sudols /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).
$ mkdirprojet-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.phpdirectement sur l’arborescence du système hôte. On teste depuis un navigateur avec l’URL :http://
$ 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éractifqui 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:/# echobonjour > /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 –qfdangling=true)
1. Nous contactez
- Description: Besoin de Formation et des Solutions cloud complètes pour vos applications
- Links:
2. Infra as a Service
- Description: Infrastructure cloud évolutive et sécurisée
- Links:
3. Projets Développeurs
- Description: Découvrez des opportunités passionnantes pour les développeurs
- Links:
4. Développeurs
- Description: Rejoignez notre communauté de développeurs
- Links:
5. Formations Complètes
- Description: Accédez à des formations professionnelles de haute qualité
- Links:
6. Marketplace
- Description: Découvrez notre place de marché de services
- Links:
7. Blogs
- Description: Découvrez nos blogs
- Links:
- comment creer une application mobile ?
- Comment monitorer un site web ?
- Command Checkout in git ?
- Comment git checkout to commit ?
- supprimer une branche git
- dockercoin
- kubernetes c est quoi
- architecture kubernetes
- Installer Gitlab Runner ?
- .gitlab-ci.yml exemples
- CI/CD
- svelte 5 vs solid
- svelte vs lit
- solidjs vs qwik
- alpine vs vue
- Plateform Freelance 2025
- Creation d’un site Web gratuitement
This website is powered by ItGalaxy.io