Qu’est-ce qu’un volume docker et à quoi ça sert

Comme vous le savez déjà, les données stockées dans un conteneur sont temporaires. Ainsi, il est essentiel de déterminer comment assurer la sauvegarde de ces données. Il y a la possibilité mais peu recommandée qui consiste à convertir le conteneur en une image, puis à relancer un nouveau conteneur en utilisant cette nouvelle image. Ici nous allons voir les volumes.

Examinons comment le moteur Docker gère les modifications de fichiers au sein de votre conteneur :

  • Lorsqu’un fichier est modifié, Docker crée une copie depuis les couches en lecture seule vers la couche en lecture-écriture.
  • Lorsqu’un fichier est créé, Docker crée le fichier uniquement sur la couche en lecture-écriture, sans altérer la couche en lecture seule.
  • En cas de suppression d’un fichier, Docker le supprime uniquement de la couche en lecture-écriture. Si le fichier existe déjà dans la couche en lecture seule, il le conserve.

Les données dans la couche de base sont en lecture seule, ce qui les rend protégées et préservées contre toute modification. Seule la couche en lecture-écriture est affectée lors de modifications de données.

Lorsqu’un conteneur est supprimé, la couche en lecture-écriture est également supprimée. Cela implique que toutes les modifications apportées après le lancement du conteneur seront effacées.

Afin de sauvegarder (persister) les données et de partager des informations entre conteneurs, Docker a introduit le concept de volumes. Les volumes sont des répertoires (ou des fichiers) qui ne font pas partie du système de fichiers Union, mais qui résident sur le système de fichiers de l’hôte.

Les volumes sont souvent la solution privilégiée pour assurer la persistance des données dans la couche en lecture-écriture. En effet, l’utilisation de volumes n’impacte pas la taille des conteneurs qui les exploitent, et leur contenu subsiste au-delà du cycle de vie d’un conteneur spécifique.

Création et gestion de volumes docker

Contrairement à un montage lié (bind mount), où un chemin dans le conteneur est explicitement lié à un chemin sur l’hôte, les volumes peuvent être créés et gérés indépendamment de tout conteneur spécifique.

Création d’un volume:

$ docker volume create <NOMDEVOLUME>

lister les volumes :

$ docker volume ls

Inspecter les volumes :

$ docker volume inspect <NOMDEVOLUME>

Les résultats de la commande ci-dessus sont un retour jason :

[
    {
        "CreatedAt": "2023-12-01T12:49:13Z",
        "Driver": "local",
        "Labels": {
            "com.docker.volume.anonymous": ""
        },
        "Mountpoint": "/var/lib/docker/volumes/9f69588675021687054ffa06fe10433f6465de26c3ab46dfaa6ef4e2dcc00663/_data",
        "Name": "9f69588675021687054ffa06fe10433f6465de26c3ab46dfaa6ef4e2dcc00663",
        "Options": null,
        "Scope": "local"
    }
]

Supprimer un volume :

$ docker volume rm <NOMDEVOLUME>

Comment créer des volumes automatiquement :

Perso j’utilise toujours des docker-compose.yml pour mes containers, il suffit de stipuler le volume à monter lors de la création du fichier, ainsi:

services:
    nodeserver:
        build:
            context: .
        volumes:
            - ./src:/app/src

0 commentaire

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Site développé et maintenu par la société DevNet-Solutions.fr

ErosiaX est une application libertine dédiée aux rencontres libertines, offrant un espace sécurisé et discret pour explorer des affinités d'érotismes diverses. Favorisant la liberté et le respect mutuel, ErosiaX permet à ses membres libertins de découvrir des partenaires partageant des intérêts similaires dans une communautée libertine ouverte et accueillante.