CodeGym /Cours /Docker SELF /Bases du stockage des données dans Docker

Bases du stockage des données dans Docker

Docker SELF
Niveau 19 , Leçon 0
Disponible

1.1 Volumes

Le stockage des données dans Docker est une partie essentielle du travail avec des conteneurs. Les conteneurs eux-mêmes sont éphémères, ce qui signifie que les données qu'ils contiennent seront perdues après l'arrêt ou la suppression du conteneur. Pour conserver les données entre les exécutions et assurer leur stockage à long terme, Docker fournit deux technologies principales : les volumes et les répertoires liés (bind mounts).

Volumes

Les volumes sont des ressources gérées par Docker pour le stockage des données. Ils existent indépendamment du cycle de vie des conteneurs, ce qui permet de les utiliser pour un stockage à long terme. Les volumes peuvent être créés et gérés par Docker, offrant ainsi un moyen pratique de stocker des données en dehors des conteneurs.

Avantages de l'utilisation des volumes

  1. Isolation de l'hôte : les volumes sont stockés dans un répertoire spécial sur l'hôte, géré par Docker, ce qui assure leur isolation.
  2. Facilité de gestion : Docker fournit des commandes pratiques pour créer, supprimer et gérer les volumes.
  3. Compatibilité et portabilité : les volumes peuvent être facilement déplacés entre différents hôtes et utilisés avec différents conteneurs.

Exemple de création et d'utilisation de volumes

Création d'un volume :

Terminal

docker volume create my_volume

Utilisation d'un volume dans un conteneur :

Dans cet exemple, le volume my_volume est monté dans le répertoire /data à l'intérieur du conteneur my_container.

Terminal

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

1.2 Répertoires liés (Bind Mounts)

Les répertoires liés permettent de monter des répertoires spécifiques du host dans les conteneurs. Cela permet aux conteneurs d'utiliser les fichiers et répertoires présents sur le host, ce qui est particulièrement utile pour le développement et les tests, quand on doit bosser avec des fichiers locaux.

Avantages d'utiliser les répertoires liés :

  1. Accès direct aux fichiers du host: les conteneurs peuvent directement utiliser les fichiers et répertoires présents sur le host.
  2. Pratique pour le développement: les développeurs peuvent facilement modifier des fichiers sur le host et voir ces modifs en temps réel dans les conteneurs.
  3. Flexibilité: les répertoires liés peuvent être n'importe quel répertoire sur le host, offrant une grande flexibilité dans la gestion des données.

Exemple d'utilisation de répertoires liés

Lancer un conteneur avec un répertoire lié :

Terminal

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

Dans cet exemple, le répertoire /path/on/host sur le host est monté dans le répertoire /data à l'intérieur du conteneur my_container.

Comparaison entre volumes et répertoires liés :

Caractéristique Volumes Répertoires liés
Stockage de données Géré par Docker Géré par l'utilisateur
Isolation Isolé du système de fichiers du host Utilise le système de fichiers du host
Performance Optimisé pour Docker Dépend du système de fichiers du host
Applicabilité Stockage de données à long terme Développement et tests

1.3 Exemples pratiques

Exemples pratiques d'utilisation

Exemple 1 : Utilisation des volumes pour une base de données

Pour garantir un stockage durable des données d'une base de données, on peut utiliser des volumes.

Création d'un volume :

Terminal

docker volume create db_data

Lancement d'un conteneur de base de données en utilisant un volume :

Terminal

docker run -d --name postgres -e POSTGRES_PASSWORD=mysecretpassword -v 
db_data:/var/lib/postgresql/data postgres

Exemple 2 : Utilisation de répertoires liés pour le développement web

Pour développer une application web, on peut utiliser des répertoires liés pour que les modifications des fichiers locaux se reflètent immédiatement dans le conteneur.

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

Terminal

docker run -d --name web_dev -v $(pwd)/my_website:/usr/share/nginx/html nginx

Dans cet exemple, le répertoire de travail actuel my_website est monté dans le répertoire /usr/share/nginx/html du conteneur nginx.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION