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
- 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.
- Facilité de gestion : Docker fournit des commandes pratiques pour créer, supprimer et gérer les volumes.
- 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 :
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
.
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 :
- Accès direct aux fichiers du host: les conteneurs peuvent directement utiliser les fichiers et répertoires présents sur le host.
- 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.
- 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é :
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 :
docker volume create db_data
Lancement d'un conteneur de base de données en utilisant un volume :
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é :
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
.
GO TO FULL VERSION