CodeGym /Cours /Docker SELF /Montage des volumes

Montage des volumes

Docker SELF
Niveau 12 , Leçon 2
Disponible

8.1 Introduction aux disques virtuels

Le montage des volumes (Volumes) est l’une des fonctionnalités les plus utiles de Docker. Grâce à cela, les conteneurs peuvent facilement manipuler les données de la machine hôte. Cette fonction rend la gestion des données flexible et pratique : vous pouvez conserver les informations à long terme, les partager entre les conteneurs et effectuer des sauvegardes ou restaurer les données sans problème si quelque chose tourne mal.

Les volumes (Volumes) dans Docker sont un moyen de conserver des données afin qu'elles soient indépendantes des conteneurs. Même si un conteneur est supprimé, les informations stockées dans les volumes restent en sécurité. Les volumes peuvent être connectés (montés) aux conteneurs, ce qui permet de stocker les données séparément et de les réutiliser, peu importe combien de fois vous créez ou supprimez les conteneurs.

Types principaux de volumes

  1. Volumes anonymes (Anonymous Volumes)
    • Créés automatiquement par Docker si aucun volume n’est explicitement indiqué pour un conteneur.
    • Utilisés pour le stockage temporaire des données.
  2. Volumes nommés (Named Volumes)
    • Créés et gérés par Docker.
    • Peuvent être connectés à plusieurs conteneurs et sont conservés même après leurs suppressions ou arrêts.
  3. Volumes avec liaison (Bind Mounts)
    • Relient un répertoire de la machine hôte à un répertoire dans le conteneur.
    • Idéals pour accéder aux données du système hôte et pratiques en développement.

Syntaxe de base de la commande docker run pour le montage des volumes


-v <host_path>:<container_path>

Syntaxe complète :


docker run -v <host_path>:<container_path> [OPTIONS] IMAGE [COMMAND] [ARG...]

Paramètres principaux pour le montage des volumes

1. Paramètre -v ou --volume

Utilisé pour créer un volume nommé ou un Bind Mount.

Exemple :

Terminal

docker run -d -v /host/data:/container/data nginx

2. Paramètre --mount

Fournit une méthode de montage plus flexible et détaillée, prenant en charge des paramètres supplémentaires.

Exemple :

Terminal

docker run -d --mount type=bind,source=/host/data,target=/container/data nginx

8.2 Création et utilisation des volumes

1. Volumes nommés

Les volumes nommés sont créés et gérés par Docker. Ils sont conçus pour le stockage à long terme des données qui doivent être conservées entre les redémarrages ou les suppressions des conteneurs.

Création d’un volume nommé :

Terminal

docker volume create my_volume

Lancement d’un conteneur avec montage de volume :

Dans cet exemple, le volume my_volume est monté dans le répertoire /data à l'intérieur du conteneur my_container. Toutes les données écrites dans /data seront sauvegardées dans le volume et resteront accessibles même après la suppression du conteneur.

Terminal

docker run -d -v my_volume:/data --name my_container nginx

2. Volumes anonymes

Les volumes anonymes sont créés automatiquement par Docker et associés à un conteneur spécifique. Ils sont utiles pour les données temporaires qui ne doivent pas être conservées après la suppression du conteneur.

Lancement d’un conteneur avec un volume anonyme :

Dans cet exemple, Docker créera automatiquement un volume anonyme et le montera dans le répertoire /data à l'intérieur du conteneur.

Terminal

docker run -d -v /data --name my_container nginx

3. Répertoires liés

Les répertoires liés permettent de monter les répertoires du système hôte dans les conteneurs. C’est pratique pour partager des données entre les conteneurs et le système hôte. Cette méthode est également souvent utilisée durant le développement, lorsque le code source est stocké sur le système hôte.

Lancement d’un conteneur avec un répertoire lié :

Dans cet exemple, le répertoire /host/data sur la machine hôte est monté dans le répertoire /container/data à l'intérieur du conteneur my_container.

Terminal

docker run -d -v /host/data:/container/data --name my_container nginx

8.3 Exemples d'utilisation des volumes

1. Sauvegarde des données de la base de données

L'utilisation des volumes pour les bases de données permet de conserver les données même lors des redémarrages et des mises à jour de conteneur. C'est particulièrement important pour un fonctionnement fiable dans des environnements de production.

Exemple :

Dans cet exemple, les données PostgreSQL sont sauvegardées dans le volume db_data, ce qui garantit leur conservation en cas de redémarrage ou de suppression du conteneur.

Terminal

docker volume create db_data
docker run -d -v db_data:/var/lib/postgresql/data --name postgres_container postgres

2. Partage des données entre conteneurs

Parfois, il peut être nécessaire de partager des données entre plusieurs conteneurs. Les volumes permettent de le faire facilement.

Exemple :

Créons un volume et lançons deux conteneurs qui utiliseront ce volume. Les deux conteneurs auront accès aux données du volume shared_data, ce qui leur permettra d'échanger des données.

Terminal

docker volume create shared_data
docker run -d -v shared_data:/data --name container1 nginx
docker run -d -v shared_data:/data --name container2 nginx

3. Développement et test

Lors du développement d'applications, il est pratique d'utiliser des répertoires montés pour partager le code source entre le conteneur et la machine hôte. Cela permet aux développeurs de modifier le code sur l'hôte, et au conteneur d'utiliser immédiatement les mises à jour.

Exemple :

Dans cet exemple, le répertoire /path/to/source sur la machine hôte est monté dans le répertoire /app à l'intérieur du conteneur dev_container. Ainsi, le conteneur peut utiliser le code source à jour directement depuis le système hôte.

Terminal

docker run -d -v /path/to/source:/app --name dev_container node
<

8.4 Gestion des volumes

Docker propose des commandes pratiques pour gérer les volumes, ce qui permet de créer, supprimer et consulter facilement des informations sur les volumes.

1. Afficher tous les volumes

Cette commande affiche une liste de tous les volumes disponibles sur la machine hôte.

Terminal

docker volume ls

2. Consulter les informations sur un volume

Avec cette commande, tu peux obtenir des détails sur le volume my_volume : son emplacement sur le système de fichiers de l'hôte ainsi que des infos sur les conteneurs qui utilisent ce volume.

Terminal

docker volume inspect my_volume

3. Supprimer un volume

Cette commande supprime le volume my_volume. Avant de supprimer, il est important de vérifier que le volume n'est utilisé par aucun conteneur, sinon la commande échouera.

Terminal

docker volume rm my_volume

8.5 Sauvegarde des volumes

Pour garantir la sécurité des données, il est important d'avoir la possibilité de créer des copies de sauvegarde des volumes et de les restaurer si nécessaire.

1. Sauvegarde d’un volume

Dans cet exemple, le contenu du volume my_volume est archivé dans un fichier my_volume_backup.tar.gz, qui est sauvegardé dans le répertoire /backup sur la machine hôte.

Terminal

docker run --rm -v my_volume:/volume -v /backup:/backup busybox tar czf /backup/my_volume_backup.tar.gz /volume

2. Restauration d’un volume

Cet exemple restaure le contenu du volume my_volume à partir de la sauvegarde, qui est stockée dans le fichier my_volume_backup.tar.gz.

Terminal

docker run --rm -v my_volume:/volume -v /backup:/backup busybox tar xzf /backup/my_volume_backup.tar.gz -C /volume
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION