Utilisation de volumes Docker pour partager les données entre les conteneurs et l'ordinateur hôte

Utilisation de volumes Docker pour partager les données entre les conteneurs et l'ordinateur hôte
Les volumes Docker sont utilisés pour persister les données d'un certain répertoire ou répertoires de vos conteneurs Docker. Ainsi, vos données ne sont pas supprimées lorsque le conteneur s'arrête ou est supprimé.

Vous pouvez également partager un volume Docker dans de nombreux conteneurs. Parlons d'un scénario pour savoir pourquoi c'est important.

Disons que vous avez une application Web PHP. Maintenant, vous voulez tester si cela fonctionne sur PHP version 5.4, 7.0, 7.1 et 7.2. Vous pouvez créer un volume Docker, appelons-le webapp. Copiez ensuite les fichiers de code source de votre application Web PHP dans le volume Docker webapp. Alors vous pouvez créer des conteneurs de différentes versions PHP et joindre le volume Docker webapp à webroot de tous ces conteneurs. De cette façon, vous pouvez facilement tester comment votre application Web fonctionne sur différentes versions PHP.

Dans cet article, je vais vous montrer comment utiliser les volumes Docker pour partager les données entre les conteneurs et l'ordinateur hôte. Commençons.

Création de volumes Docker:

Avant de pouvoir ajouter un volume Docker à votre conteneur, vous devez créer un volume Docker.

Pour créer un volume Docker (disons data1), exécutez la commande suivante:

$ volume docker Créer des données1

data1 Le volume doit être créé.

Listing Docker Volumes:

Vous pouvez répertorier tous les volumes Docker que vous avez créés avec la commande suivante:

$ Docker Volume List

Comme vous pouvez le voir, tous les volumes Docker sont répertoriés. En ce moment, je n'ai que data1 Volume de docker. Si je créais plus, il apparaîtrait ici.

Inspection des volumes de Docker:

Vous pouvez voir plus d'informations sur un certain volume Docker (disons data1) avec la commande suivante:

$ docker volume inspecter data1

Comme vous pouvez le voir, beaucoup d'informations sur le data1 Le volume est répertorié au format JSON. Le plus important est Point de montage. Point de montage vous indique le chemin du système de fichiers local où le volume est monté. Ici le data1 Le volume est monté sur / var / lib / docker / volumes / data1 / _data sur mon système de fichiers local. Je vais vous montrer comment modifier les données sur vos volumes Docker de votre ordinateur hôte dans une section ultérieure de cet article ci-dessous.

Ajout de volumes aux conteneurs et partage de volumes entre les conteneurs:

Maintenant, je vais créer un simple conteneur docker à partir du httpd: 2.4 Image docker pour exécuter Apache 2 Webserver. Alors je vais monter le data1 volume à / usr / local / apache2 / htdocs Répertoire de ce conteneur Docker. Je donnerai également un nom au conteneur (disons www) juste pour le gérer facilement.

Pour ce faire, exécutez la commande suivante:

$ docker run -d -it --name = www --mount source = data1, destination = / usr / local / apache2 / htdocs
httpd: 2.4

Le récipient www devrait être créé.

Maintenant pour vérifier si le data1 le volume a été monté sur le www conteneur, exécutez la commande suivante:

$ docker inspecter www

C'est une longue liste d'informations. Mais sur le Montures, Vous pouvez voir cela, le nom du volume est data1, il est monté sur / usr / local / apache2 / htdocs sur le www récipient.

Maintenant je vais me connecter au www conteneur et exécuter le frapper Shell là-bas avec la commande suivante:

$ docker exec -it www bash

Comme vous pouvez le voir, Bash Shell fonctionne.

Créons maintenant un fichier html simple dans le / usr / local / apache2 / htdocs répertoire où le data1 le volume est monté.

$ echo "Hello World"> / usr / local / apache2 / htdocs / index.html

Maintenant sortir du www Conteneur Docker avec la commande suivante:

$ exit

Découvrez maintenant l'adresse IP du www conteneur avec la commande suivante:

$ docker inspecter www | adresse grep

Comme vous pouvez le voir, l'adresse IP du conteneur www est 172.17.0.2 (dans mon cas).

Quand j'accède au www conteneur du navigateur Web, vous pouvez voir que la page que je viens de créer est affichée.

Maintenant je vais créer un autre conteneur www2 et attacher le data1 volume à lui de la même manière et voir si le changement de la data1 volume (monté dans / usr / local / apache2 / htdocs dans www et www2 conteneur) d'un conteneur est visible à l'autre conteneur.

Pour créer un nouveau conteneur www2, et attacher le data1 Volume à lui, exécutez la commande suivante:

$ docker run -d -it --name = www2 - monte source = data1, destination = / usr / local / apache2 / htdocs
httpd: 2.4

Finissons maintenant l'adresse IP du www2 conteneur avec la commande suivante:

$ docker inspecter www2 | adresse grep

Comme vous pouvez le voir, j'obtiens la même page lorsque j'accéderai au www2 conteneur d'un navigateur Web. Cela signifie que les données du www le conteneur a persisté et partagé avec le www2 récipient.

Maintenant, je vais apporter des modifications au indice.html (dans le data1 Volume monté dans / usr / local / apache2 / htdocs) page du www2 conteneur et vérifier si le changement se reflète pour les deux www et www2 conteneurs.

Comme vous pouvez le voir, les modifications apportées à un seul conteneur (www2 Dans ce cas) se reflète dans l'autre conteneur (www dans ce cas).

Accéder aux volumes Docker à partir de l'ordinateur hôte:

NOTE: Pour que cela fonctionne, vous devez être connecté comme racine utilisateur.

Vous pouvez exécuter la commande suivante pour trouver le chemin du chemin du data1 Volume Docker dans votre ordinateur hôte:

# Docker Volume Inspecter Data1

Comme vous pouvez le voir, le data1 le volume est dans le / var / lib / docker / volumes / data1 / _data Répertoire de mon ordinateur hôte.

Accédez maintenant à la / var / lib / docker / volumes / data1 / _data Répertoire avec la commande suivante:

# CD / var / lib / docker / volumes / data1 / _data

Comme vous pouvez le voir, le indice.html le fichier que nous venons de créer est là.

# LS

Aussi le contenu du indice.html Le fichier est le même.

Maintenant, modifions le indice.html fichier et voir si les modifications sont reflétées dans le www et www2 conteneurs.

# nano index.html

J'ai changé le contenu du indice.html fichier à ceci:

Comme vous pouvez le voir, les modifications sont reflétées au www et le www2 conteneurs.

Suppression des volumes de Docker:

Si vous le souhaitez, vous pouvez également supprimer un volume Docker. Pour supprimer un volume Docker, disons data2, Exécutez la commande suivante:

$ docker volume rm data2

Le volume Docker data2 devrait être supprimé de façon permanente.

C'est ainsi que vous partagez des volumes Docker entre les conteneurs et l'ordinateur hôte. Merci d'avoir lu cet article.