GNU/Linux >> Tutoriels Linux >  >> Linux

20 exemples de commandes de volume Docker utiles pour les développeurs modernes

Docker a changé la façon dont nous empaquetons nos programmes depuis son émergence en 2013. Il permet aux développeurs de créer des logiciels de pointe avec un minimum de dépendances et rend le déploiement plus facile que jamais. Si vous êtes un ingénieur logiciel en herbe qui cherche à maîtriser la plate-forme Docker, vous devez avoir une bonne compréhension des différentes commandes de volume Docker. Les volumes sont un mécanisme utilisé par Docker pour fournir un stockage de données persistant. Ils offrent des avantages significatifs en termes de développement et de déploiement de logiciels. Nous avons pris notre temps aujourd'hui pour vous enseigner les éléments de base des volumes de données dans Docker.

Exemples de commandes de volume Docker essentielles

Ce guide vous apprendra les méthodologies actuelles utilisées par les développeurs pour implémenter le stockage de données persistantes dans des projets commerciaux et open source. Vous pourrez créer vos propres volumes de données et y accéder sans effort à partir de vos conteneurs Docker après avoir terminé ce guide. Si vous êtes un débutant absolu, nous vous suggérons de consulter notre guide sur les commandes docker essentielles avant de travailler avec des volumes.

1. Création de volumes Docker

Il est très facile de créer des volumes de données dans Docker. Vous devrez utiliser la commande de création de volume du démon docker pour ce faire. Jetez un coup d'œil à l'exemple ci-dessous pour voir comment cela fonctionne.

$ docker volume crée testVolume

Cette commande crée un nom de volume de données testVolume qui peut être utilisé par un conteneur spécifique ou partagé entre un cluster de conteneurs. Vous pouvez maintenant monter ce volume à un emplacement à l'intérieur du conteneur. Une fois cela fait, il sera très facile de stocker ou d'accéder aux données du conteneur depuis la machine hôte.

2. Affichage des volumes disponibles

Il est courant que les environnements de développement aient un grand nombre de volumes de données. Il est donc crucial d'identifier les volumes spécifiques avec lesquels vous travaillez. Heureusement, il est très facile de répertorier tous les volumes de données actuellement déclarés à l'aide de la sous-commande volume ls du démon docker.

$ docker volume ls
- -

Vous obtiendrez une liste de tous les volumes Docker présents sur votre hôte en exécutant la commande ci-dessus. Il imprime les noms des volumes de données ainsi que les pilotes de volume respectifs. Les volumes de données sont stockés dans une partie spécifique du système de fichiers hôte, à savoir /var/lib/docker/volumes/ sous Linux.

3. Inspection des volumes Docker

La commande volume inspects du démon docker nous fournit des informations essentielles sur un volume particulier. Il affiche des informations telles que le pilote de volume, le point de montage, la portée et les étiquettes. La commande ci-dessous illustre cela à l'aide d'un exemple pratique.

$ docker volume inspect testVolume

Les données résultantes montrent que notre testVolume est monté à l'emplacement /var/lib/docker/volumes/testVolume/_data de notre machine hôte. Il affiche également la date de création de ces informations ainsi que les options spécifiées. Cela facilite grandement le dépannage des volumes de données pour les développeurs.

4. Suppression de volumes spécifiques

Si vous avez accumulé des volumes de données inutilisés, il est judicieux de les supprimer. Vous pouvez ainsi libérer de l'espace de stockage dans l'environnement hôte. L'exemple suivant illustre comment vous pouvez supprimer un seul volume à l'aide de son attribut de nom.

$ docker volume rm testVolume

Ainsi, vous pouvez supprimer un volume de données particulier en utilisant la sous-commande volume rm, suivie du nom du volume. Il renverra le nom du volume supprimé dans votre émulateur de terminal Linux en guise de confirmation.

5. Suppression de plusieurs volumes

La suppression de plusieurs volumes de données est également assez simple. Passez simplement le nom des volumes que vous souhaitez supprimer les uns après les autres. La commande ci-dessous le montre en action.

$ docker volume rm testVolume newVolume otherVolume

Cette commande supprimera les trois volumes de données spécifiés. Notez que nous n'avons pas créé newVolume et autre volume . Ils ont été utilisés ici à des fins de démonstration uniquement. Assurez-vous donc que vos volumes de données existent avant de les supprimer.

6. Suppression de tous les volumes

C'est toujours une bonne idée de se débarrasser de vos volumes de données une fois que vos conteneurs sont déplacés vers l'environnement de production depuis votre machine de développement. Heureusement, le démon docker permet aux développeurs de supprimer tous les volumes docker disponibles à l'aide d'une seule commande, comme illustré ci-dessous.

$ docker volume prune

De plus, cette commande de volume docker est élégante, ce qui signifie qu'elle ne supprimera aucun volume utilisé par un conteneur existant. Ainsi, il est très sûr à utiliser et aide à libérer de l'espace indispensable dans les environnements de développement.

7. Création de conteneurs avec des volumes de données

Jusqu'à présent, nous n'avons montré que quelques opérations de volume de base. Cependant, vous devrez monter vos volumes de données sur un conteneur Docker dans la plupart des scénarios réels. La commande docker suivante vous montre comment créer un conteneur docker et monter un volume de données sur ce conteneur.

$ docker run -d -it --name test-container -v "testVolume":/tmp ubuntu:xenial
$ docker run -d -it --name test-container --volume "testVolume":/tmp ubuntu:xenial

Cette commande créera un conteneur nommé test-container en utilisant l'image ubuntu:xenial et montera notre volume de données sur /tmp emplacement de ce conteneur. Vous pouvez trouver plus d'informations en exécutant la commande ci-dessous et en vérifiant la section "Monter" de la sortie.

$ docker inspect test-container

8. Montage de volumes de données sur des conteneurs

Le –montage L'option dans Docker peut être utilisée pour adresser un volume de données existant à une partie spécifique du système de fichiers du conteneur. Bien que le résultat soit totalement similaire à la commande ci-dessus, il est plus intuitif pour de nombreux développeurs Linux.

$ docker run -d -it --name test-container --mount source=testVolume,target=/tmp ubuntu:xenial

Le –montage option un ensemble de tuples séparés par des virgules. Ce sont = paires qui dénotent les attributs du volume de données.

9. Création de montages liés dans Docker

Les montages liés sont un mécanisme de persistance disponible depuis les débuts de Docker. Ils offrent des fonctionnalités quelque peu limitées par rapport aux volumes docker mais sont plus adaptés dans certains cas spécifiques. Contrairement aux volumes, les montages liés dépendent du système de fichiers hôte sous-jacent.

$ docker run -d -it --name test-container --mount type=bind,source=$(pwd),target=/tmp ubuntu:xenial

La commande ci-dessus crée un montage lié qui mappe le répertoire de travail actuel de votre système de fichiers Linux sur /tmp emplacement du conteneur. Letype=bind tuple indique qu'il s'agit d'un montage lié, plutôt que d'un volume.

10. Pré-remplir les volumes de données

Parfois, les développeurs peuvent avoir besoin de pré-remplir leurs volumes de données lors de la création de conteneurs Docker. Cependant, cette technique ne s'applique que si la destination cible du conteneur contient des données avant la création du volume.

$ docker run -d --name=nginxContainer -v nginxVol:/usr/share/nginx/html nginx:latest

Cette commande crée d'abord le volume nginxVol et le remplit avec le contenu de /usr/share/nginx/html emplacement du système de fichiers des conteneurs. Désormais, ces données seront accessibles à tous les autres conteneurs partageant le volume nginxVol. Vous pouvez également utiliser la syntaxe de montage, comme indiqué ci-dessous.

$ docker run -d --name=nginxContainer --mount source=nginxVol,destination=/usr/share/nginx/html nginx:latest

11. Utilisation de volumes en lecture seule

Par défaut, tous les conteneurs disposent d'un accès en lecture et en écriture à leurs volumes de données respectifs. Cependant, tous les conteneurs n'ont pas besoin d'écrire des données sur un volume. Souvent, la simple lecture des données suffit. Dans de tels cas, vous pouvez attribuer un accès en lecture seule à votre conteneur. Vérifiez les commandes de volume docker pour voir comment cela fonctionne.

$ docker run -d --name=nginxContainer -v nginxVol:/usr/share/nginx/html:ro nginx:latest

Donc, en ajoutant simplement le ':ro ' après la destination empêchera le nginxContainer d'écrire des données dans le nginxVol. Vous devrez utiliser le 'readonly ' si vous créez des volumes à l'aide de l'option –mount. Notez attentivement la différence de syntaxe.

$ docker run -d --name=nginxContainer --mount source=nginxVol,destination=/usr/share/nginx/html,readonly nginx:latest

12. Création de volumes à l'aide de pilotes

Les pilotes de volume sont un mécanisme flexible utilisé par Docker pour fournir un accès aux montages à distance, au chiffrement des données et à d'autres fonctionnalités. Les commandes ci-dessous montrent aux utilisateurs comment créer un conteneur Docker à l'aide d'un pilote de volume spécifique.

$ docker volume create --driver vieux/sshfs -o [email protected]:/home/session -o password=testPassword  sshVolume

Cette commande crée un volume de données docker à l'aide du pilote vieux/sshfs. Ce pilote permet aux développeurs d'attacher des répertoires distants à l'aide de la technologie SSHFS.

13. Exécution de conteneurs qui créent des volumes à l'aide de pilotes

Vous pouvez utiliser la commande suivante pour créer et démarrer des conteneurs qui utilisent des pilotes de volume pour créer leur volume de données. Cet exemple s'appuie sur celui ci-dessus.

$ docker run -d --name sshfsContainer --volume-driver vieux/sshfs --mount src=sshVolume,target=/tmp,[email protected]:/home/session,volume-opt=password=testPassword nginx :dernier

Le tuple volume-opt passe les options. Ce n'est pas obligatoire pour tous les cas d'utilisation. Cependant, si vous spécifiez volume-opt, vous devez utiliser le –mount drapeau au lieu de -v ou –volume.

14. Création de services utilisant un volume NFS

NFS ou Network File System est un système de partage de fichiers distribué qui nous permet d'utiliser des systèmes de fichiers distants comme s'ils faisaient partie du système de fichiers local. La commande suivante montre comment créer un service qui utilise un volume NFS.

$ docker service create -d --name nfs-service --mount 'type=volume,source=nfsVolume,target=/tmp,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/var/docker-nfs,volume-opt=o=addr=10.0.0.10' nginx:latest

Cette commande suppose que notre serveur NGS s'exécute sur 10.0.0.10 et expose le /var/docker-nfs annuaire. Il utilise également NFSv3. Vous devrez donc faire quelques ajustements avant de l'utiliser avec NFSv4.

15. Sauvegarde des conteneurs

Les volumes offrent aux développeurs un moyen flexible de sauvegarder les données essentielles du conteneur. À des fins d'illustration, nous allons d'abord créer un nouveau conteneur nommé test-container.

$ docker run -v /data --name test-container ubuntu:xenial /bin/bash

Ainsi, test-container a un volume appelé /data. Maintenant, nous allons lancer un autre conteneur et monter le /data volume du récipient de test. Nous allons ensuite monter un répertoire local de notre système de fichiers en tant que /backup puis stocker le contenu de /data à la /sauvegarde répertoire comme backup.tar.

$ docker run --rm --volumes-from test-container -v $(pwd):/backup ubuntu:xenial tar cvf /backup/backup.tar /data

Les –volumes-de L'option indique que nous montons actuellement le volume de données du conteneur de test dans notre nouveau conteneur.

16. Restauration des sauvegardes de conteneurs

Il est également très facile de restaurer vos conteneurs à partir de fichiers de sauvegarde. Vous pouvez restaurer les données dans le même conteneur ou dans un conteneur spécifique. Nous allons vous montrer comment restaurer le contenu du fichier backup.tar créé dans l'exemple précédent dans un autre conteneur ici.

$ docker run -v /data --name test-container2 ubuntu /bin/bash

Cette commande crée un autre nouveau conteneur avec un /data le volume. Nous allons maintenant extraire le contenu du fichier backup.tar dans ce nouveau volume de données.

$ docker run --rm --volumes-from test-container2 -v $(pwd):/backup ubuntu bash -c "cd /data &&tar xvf /backup/backup.tar --strip 1" 

Vous pouvez automatiser vos sauvegardes et restaurations à l'aide de ces commandes de volume docker simples mais flexibles.

17. Suppression de volumes anonymes

Plus tôt, nous avons vu comment supprimer un volume nommé normal. Cependant, Docker dispose également d'un autre type de volume de données appelé volumes anonymes. Jetez un coup d'œil à la commande ci-dessous pour voir en quoi l'opération de suppression diffère entre les volumes nommés et anonymes.

$ docker run --rm -v /anon -v whats-in-a-name:/tmp busybox top

La commande ci-dessus créera un volume anonyme appelé /anon et un volume nommé appelé whats-in-a-name . Désormais, Docker supprimera automatiquement ce conteneur à la sortie. Cependant, cela ne supprimera que le /anon volume, pas le volume whats-in-a-name. Vous devez le supprimer à l'aide de la commande docker volume rm.

18. Spécification de la propagation des montures

La propagation de la monture désigne le flux de contrôle entre la monture d'origine et ses répliques. Par défaut, le montage lié et les volumes utilisent le rprivate paramètre. Cela évite toute propagation entre la monture d'origine et ses répliques. Vous pouvez remplacer ce paramètre à l'aide du tuple de propagation de liaison du montage de liaison.

$ docker run -d -it --name test-container --mount type=bind,source="$(pwd)"/test,target=/tmp --mount type=bind,source="$( pwd)"/test,target=/temp,readonly,bind-propagation=shared nginx:latest

Cette commande monte le /test répertoire deux fois dans le conteneur. De plus, tout nouvel ajout au fichier /tmp mount sera reflété dans le /temp monter. Cependant, vous ne pouvez pas remplacer le paramètre de propagation lors de l'utilisation de volumes. Cela ne fonctionne que lors de l'utilisation du montage lié sur un hôte Linux.

19. Affichage du manuel de commande du volume

Vous pouvez facilement afficher l'utilisation de base des commandes de volume en utilisant la commande ci-dessous.

Volume docker homme en $

Cependant, il ne fournit pas d'explications détaillées. Nous vous suggérons donc de consulter la documentation officielle de docker sur les volumes et les montages liés.

20. Affichage de la page d'aide pour les sous-commandes

Utilisez la commande suivante pour afficher les principales options disponibles pour le volume docker.

$ docker volume --help

Vous pouvez également afficher plus d'informations sur une option spécifique en utilisant la syntaxe suivante.

$ docker volume COMMANDE --help$ docker volume ls --help

Fin des pensées

Les volumes Docker fournissent une installation indispensable pour les applications modernes. Ils permettent aux développeurs de créer des applications et des services robustes et de pointe en éliminant les problèmes de stockage. De plus, les commandes de volume docker facilitent également la création et la maintenance de sauvegardes de vos données de conteneur. Nous avons élaboré ce guide bien pensé pour vous aider à maîtriser plus facilement les volumes de données. Nous vous recommandons vivement de commencer par les commandes de base, puis de passer progressivement à des scénarios complexes et réels. J'espère que nous vous avons fourni les informations que vous recherchiez dans ce guide. N'oubliez pas de nous laisser un commentaire si vous avez des questions.


Linux
  1. 12 exemples de commandes Wget utiles sous Linux

  2. 16 exemples de commandes 'cp' utiles pour les débutants Linux

  3. Exemples de commandes DNF pour les débutants

  4. 10 exemples pratiques de commandes Grep pour les développeurs

  5. Commande ls sous Linux :17 exemples utiles expliqués

11 exemples de commandes Split utiles pour les systèmes Linux

Expliquer les volumes Docker avec des exemples

Exa - Un remplacement moderne pour la commande ls

40 exemples utiles de commande Linux PS pour les aspirants administrateurs système

Les 40 exemples de commandes Go pour les développeurs Golang en herbe

12 exemples de commandes de date Linux utiles