Créez facilement des volumes Docker sous Windows

Les volumes Docker sont le moyen privilégié de gérer les données persistantes créées et utilisées par les conteneurs Docker. Voyons comment cela fonctionne en couvrant la création de volumes Docker sur Windows. Vous apprendrez également comment les gérer !

Cet article de blog est accompagné d’une vidéo réalisée par Matt McElreath, contributeur de TechSnips. N’hésitez pas à regarder ou, si vous préférez du texte, continuez à lire !

Stockage de données persistantes

Si vous souhaitez stocker des données persistantes pour les conteneurs, vous avez quelques options. Tout d’abord, je vais vous montrer comment utiliser un montage de liaison. Je suis actuellement dans un dossier appelé data sur mon C:\. Si je liste le contenu de ce dossier, vous pouvez voir que j’ai cinq fichiers texte.

Multiple text files in the C:\data folder

Si je veux rendre ce dossier disponible à un conteneur, je peux le monter au démarrage du conteneur.

Allons-y et exécutons un conteneur en utilisant docker run. Je vais exécuter ce conteneur en mode interactif, puis spécifier -V. Ici, je vais mettre le chemin vers mon dossier de données, suivi de deux points, puis je spécifierai le chemin à l’intérieur du conteneur où je souhaite que ce dossier soit monté.

Pour cela, je vais spécifier le dossier C:\shareddata. Ensuite, je vais spécifier l’image du serveur Windows core image, et enfin, je vais préciser que je veux exécuter PowerShell une fois à l’intérieur du conteneur.

docker run -it -v c:\Data:c:\shareddata microsoft/windowsservercore powershell

Maintenant que je suis à l’intérieur du nouveau conteneur, si je liste le contenu de C:\, vous pouvez voir que j’ai un dossier shareddata.

Listing directory contents in a Docker container

Allons dans ce dossier et listons le contenu. Voici mes cinq fichiers de test situés sur mon hôte de conteneur.

Files on the host

I can also create files in this folder, which will be available to other containers or my container host. Let’s go ahead and run a new item to create a file called containertest.

Creating a file on the container host

On peut voir ci-dessus que le nouveau fichier a été créé depuis l’intérieur du conteneur. Maintenant, je vais quitter ce conteneur, ce qui l’arrêtera en exécutant exit.

Si je lance docker ps, vous pouvez voir qu’il n’y a actuellement aucun conteneur en cours d’exécution.

Looking for running containers

Énumération des données dans les volumes Docker

Maintenant, listons à nouveau le contenu du dossier de données depuis mon hôte de conteneur.

Listing files on the container host

On peut voir le nouveau fichier qui a été créé depuis l’intérieur du conteneur appelé containertest. Les montages par liaison ont quelques fonctionnalités limitées, cependant, les volumes sont la manière préférée d’accomplir ce que nous essayons de faire. Pour commencer avec les volumes, nous pouvons exécuter la même commande pour démarrer un conteneur, mais cette fois avec quelques petites différences. Là où nous avons spécifié le volume, au lieu d’utiliser le chemin sur le système de fichiers de l’hôte du conteneur, je vais utiliser le mot hostdata comme nom d’un volume que je veux créer et utiliser.

Depuis l’intérieur du nouveau conteneur, si je liste le contenu de C:\, vous pouvez voir à nouveau que j’ai un dossier appelé shareddata.

Listing files

Si je liste le contenu de ce dossier, il est actuellement vide car nous avons créé un volume vide. Maintenant, exécutons Ctrl-P-Q, ce qui nous permettra de sortir du conteneur en cours d’exécution, mais de le laisser fonctionner en arrière-plan.

À partir de l’hôte du conteneur, exécutez docker volume ls. Cela affichera les volumes actuels sur cet hôte de conteneur. J’ai un volume appelé hostdata, qui a été créé lorsque je l’ai spécifié dans la commande docker run.

Listing Docker volumes

Si j’exécute docker ps, nous pouvons voir notre conteneur en cours d’exécution.

Listing running containers

Arrêtez ce conteneur en utilisant docker stop. Maintenant, nous n’avons plus de conteneurs en cours d’exécution.

Stopping a Docker container

Supprimez les conteneurs arrêtés en exécutant docker rm. Si je liste à nouveau les volumes, vous pouvez voir que le volume hostdata est toujours disponible et peut être monté sur de nouveaux conteneurs.

Listing Docker volumes

Création de volumes Docker

Une autre façon de créer un volume est d’utiliser la commande docker volume create. Si vous ne spécifiez pas de nom, Docker lui donnera un nom qui est une longue liste de caractères aléatoires. Sinon, vous pouvez spécifier un nom ici. Je vais appeler ce volume logdata. Maintenant, nous pouvons le voir dans la liste lorsque nous listons à nouveau les volumes.

Creating a new Docker volume

Vous allez maintenant le monter sur un nouveau conteneur. Utilisez à nouveau docker run et pour le volume, spécifiez le volume que vous venez de créer et montez-le sur c:\logdata.

> docker run -it -v logdata:c:\logdata microsoft/windowsservercore powershell

Depuis l’intérieur du conteneur, allez dans le dossier logdata et créez quelques fichiers. Pour l’instant, il n’y a aucun fichier dans ce répertoire, alors allez-y et en créez quelques-uns.

PS> New-Item -Name Log1.txt -ItemType File
PS> New-Item -Name Log2.txt -ItemType File

Maintenant, j’ai deux fichiers journaux dans ce répertoire.

Two files in C:\logdata

Exécutez à nouveau Ctrl-P-Q pour quitter ce conteneur tout en le laissant en cours d’exécution. Pendant que ce conteneur est en cours d’exécution, démarrez un nouveau conteneur avec le même volume monté.

> docker run -it -v logdata:c:\logdata microsoft/windowsservercore powershell

Si nous exécutons une liste sur le dossier logdata dans le nouveau conteneur, nous pouvons voir les deux fichiers journaux partagés.

Two log files being shared with containers

Maintenant, quittez ce conteneur. Vous devriez toujours avoir un conteneur en cours d’exécution et deux conteneurs arrêtés.

Two containers still running

Maintenant, arrêtez tous les conteneurs en cours d’exécution, puis exécutez docker rm pour supprimer tous les conteneurs arrêtés.

Removing Docker containers

Listez à nouveau les volumes. Le volume logdata est toujours disponible pour être monté dans les futurs conteneurs.

Volume still available

Si vous exécutez docker volume, vous obtiendrez une aide d’utilisation pour la commande.

Docker volume syntax

Inspection des volumes Docker

Nous avons déjà examiné create, passons donc à inspect. Si j’exécute docker volume inspect contre le volume logdata, il retournera les propriétés de ce volume, y compris le point de montage qui est le chemin physique du volume sur l’hôte du conteneur.

Inspecting Docker volumes

Ouvrons ce dossier à l’aide de Invoke-Item et jetons un coup d’œil. Sous le dossier logdata, il y a un dossier appelé data. Si nous l’ouvrons, nous pouvons voir les fichiers qui ont été créés à partir du conteneur précédent.

Files created earlier

Suppression des volumes Docker

Pour supprimer un volume, vous pouvez exécuter docker volume rm, suivi du nom du volume que vous souhaitez supprimer.

> docker volume rm logdata

Maintenant, si je liste les volumes, logdata n’est plus là.

Listing Docker volumes

Enfin, nous pouvons utiliser prune pour supprimer tous les volumes locaux inutilisés. Cela supprimera tous les volumes qui ne sont pas montés sur un conteneur en cours d’exécution ou arrêté.

Inspecting the prune parameter

Vous devez faire attention avec cette commande, car il y a un avertissement et une invite pour vous assurer que vous êtes sûr de vouloir le faire. Si je saisis Y et appuie sur Entrée, il me montrera quels volumes ont été supprimés.

Et si je liste à nouveau mes volumes, vous pouvez voir qu’ils ont tous été supprimés.

No Docker volumes exist

Résumé

Dans cet article de blog, vous devriez avoir une bonne vue d’ensemble de la gestion des volumes Docker sous Windows. Docker est une excellente plateforme de conteneur. Avec son support pour Windows et vos nouvelles compétences en gestion des volumes Docker, vous serez imbattable !

Source:
https://adamtheautomator.com/create-docker-volume/