Présentation
Les volumes Docker sont des outils largement utilisés et utiles pour assurer la persistance des données tout en travaillant dans des conteneurs. Ils constituent une meilleure alternative que la compilation de couches inscriptibles supplémentaires, qui augmentent la taille de l'image Docker.
Dans ce didacticiel, découvrez comment utiliser Docker Volumes avec des exemples pratiques.
Que sont les volumes Docker ?
Les volumes Docker sont des systèmes de fichiers montés sur des conteneurs Docker pour conserver les données générées par le conteneur en cours d'exécution.
Les volumes sont stockés sur l'hôte, indépendamment du cycle de vie du conteneur. Cela permet aux utilisateurs de sauvegarder facilement des données et de partager des systèmes de fichiers entre conteneurs.
Premiers pas avec les volumes Docker
Il existe différentes manières de monter un volume Docker lors du lancement d'un conteneur. Les utilisateurs peuvent choisir entre le -v
et le --mount
flags, qui sont ajoutés au docker run
commande.
Cet article montre des exemples d'utilisation des deux drapeaux.
Comment créer un volume Docker
Pour créer un volume Docker, utilisez la commande :
docker volume create [volume_name]
Docker crée automatiquement un répertoire pour le volume sur l'hôte sous /var/lib/docker/volume/ chemin. Vous pouvez désormais monter ce volume sur un conteneur, garantissant ainsi la persistance et le partage des données entre plusieurs conteneurs.
Par exemple, pour créer un volume sous le nom data , vous exécuteriez la commande :
docker volume create data
Répertorier les volumes Docker
Pour vérifier que vous avez créé avec succès un volume Docker, invitez Docker à répertorier tous les volumes disponibles avec :
docker volume list
La sortie affiche une liste de volumes, spécifiant leur emplacement (DRIVER ) et leur NOM DE VOLUME . Dans l'image ci-dessous, vous pouvez voir le volume de données créé dans la section précédente.
Inspecter les volumes Docker
Pour voir plus d'informations sur un volume Docker, utilisez le inspect
commande :
docker volume inspect [volume_name]
Il répertorie les détails d'un volume, y compris son emplacement sur le fichier hôte (Mountpoint ). Tout ce qui est stocké dans le volume de données se trouve également dans le répertoire répertorié sous le chemin du point de montage.
Monter un volume de données
Pour monter un volume de données sur un conteneur, ajoutez le --mount
indicateur à l'docker run
commande. Il ajoute le volume au conteneur spécifié, où il stocke les données produites à l'intérieur de l'environnement virtuel.
Pour exécuter un conteneur et y monter un volume de données, suivez la syntaxe de base :
docker run --mount source=[volume_name],destination=[path_in_container] [docker_image]
Remplacez [path_in_container]
avec le chemin où vous souhaitez placer le volume de données dans le conteneur. Tout ce qui est stocké dans ce répertoire est également automatiquement enregistré sur le volume de données de l'hôte.
Par exemple, pour lancer un conteneur Ubuntu et monter les données volume, lancez :
docker run -it --name=example1 --mount source=data,destination=/data ubuntu
La commande demande à Docker d'exécuter un conteneur en mode interactif (-it
) de l'image Ubuntu, sous le nom example1
, lors du montage des données de volume dans /data
répertoire à l'intérieur du conteneur.
Ensuite, vérifiez que le volume a été monté avec succès en répertoriant le contenu du conteneur :
ls
Recherchez le volume Docker sous le nom défini lors du lancement du conteneur. Dans cet exemple, il s'agit de données .
Copier des fichiers entre conteneurs à partir d'un volume partagé
Voyons comment les volumes Docker vous permettent de partager des fichiers entre conteneurs.
Pour ce faire, nous utilisons le volume et le conteneur créés dans la section précédente. Cela comprenait l'exécution des commandes :
docker volume create data
docker run -it --name=example1 --mount source=data,destination=/data ubuntu
1. Une fois que vous êtes passé à l'invite de commande du conteneur, accédez au répertoire du volume de données :
cd data
2. Créez un fichier d'échantillon vide à l'aide de la commande touch :
touch sample1.txt
3. Maintenant, quittez le conteneur :
exit
4. Ensuite, lancez un nouveau conteneur example2 avec le même volume de données :
docker run -it --name=example2 --mount source=data,destination=/data ubuntu
5. Lister le contenu du conteneur. Vous devriez trouver le répertoire de données, comme dans example1 :
ls
6. Accédez au répertoire de données et listez-en le contenu :
cd data
ls
La sortie doit répertorier le sample1.txt fichier que vous avez créé dans le conteneur précédent (example1 ).
Monter un répertoire hôte en tant que volume de données
Vous pouvez également monter un répertoire existant de la machine hôte vers un conteneur. Ce type de volume est appelé Volumes hôtes .
Vous pouvez monter des volumes hôtes en utilisant le -v
flag et en spécifiant le nom du répertoire hôte.
Tout ce qui se trouve dans le répertoire hôte est alors disponible dans le conteneur. De plus, toutes les données générées à l'intérieur du conteneur et placées dans le volume de données sont stockées en toute sécurité dans le répertoire hôte.
La syntaxe de base pour monter un répertoire hôte est :
docker run -v "$(pwd)":[volume_name] [docker_image]
Le "$(pwd)"
ordonne à Docker de monter le répertoire dans lequel se trouve actuellement l'utilisateur.
L'exemple suivant décrit comment cela est fait.
1. Tout d'abord, créez un exemple de répertoire sur l'hôte sous le nom tmp et emménagez-y :
mkdir tmp
cd tmp
2. Une fois dans le répertoire, créez un fichier de test pour voir s'il sera disponible depuis le conteneur :
touch file.txt
2. Ensuite, utilisez le docker run
commande pour lancer un conteneur Ubuntu avec le répertoire hôte qui lui est attaché :
docker run -it -v "$(pwd)":/data1 ubuntu
Cela lance le conteneur en mode interactif et monte un volume sous le nom data1 .
3. Répertoriez le contenu du conteneur et vérifiez qu'il existe une data1 répertoire :
ls
4. Ouvrez le répertoire monté et répertoriez le contenu. La sortie doit afficher le fichier que vous avez créé sur l'hôte :
cd data1
ls
Autorisation et propriété du volume
Les autorisations de volume peuvent être modifiées en configurant la propriété dans le Dockerfile.
Utilisez le RUN
instruction et le chown
commande pour définir l'autorisation de volume Docker. Assurez-vous que cette instruction précède la ligne définissant le VOLUME
.
Vous pouvez également modifier le propriétaire du répertoire utilisé comme volume hôte.
Pour obtenir des instructions sur l'utilisation du chown
commande, reportez-vous au didacticiel sur les autorisations de fichiers Linux :comment vérifier et modifier les autorisations.
Comment supprimer des volumes Docker
Pour supprimer un volume Docker, vous devez spécifier son nom.
La syntaxe de base pour supprimer un volume Docker dans la ligne de commande est :
docker volume rm [volume_name]
Docker supprime les volumes uniquement s'ils ne sont pas utilisés pour le moment. S'il existe un conteneur avec le volume spécifié, il répond par une erreur. Pour continuer, arrêtez et supprimez le conteneur, puis relancez le docker volume rm
commande.
Comment supprimer tous les volumes à la fois
Pour supprimer tous les volumes Docker inutilisés avec une seule commande :
docker volume prune
La sortie vous avertit qu'elle supprimera tous les volumes locaux non utilisés par au moins un conteneur. Appuyez sur y pour continuer.