GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Comprendre les volumes Docker

Les fichiers (et autres données) stockés dans un conteneur Docker ne sont pas conservés si le conteneur est supprimé. Pour surmonter cela, Docker volumes et lier les montures peut être utilisé. Ce guide traite de l'utilisation des volumes Docker comme moyen de stocker des données persistantes. Considérez les volumes comme un disque dur externe ; si le disque dur interne est effacé, le disque dur externe conserve toujours ses propres données. Les volumes sont stockés sur l'hôte et indépendamment de tout conteneur ou image. Ils peuvent être montés sur différents conteneurs selon les besoins et, puisque les volumes sont séparés de l'image, ils n'augmentent pas la taille de l'image.

Avant de commencer

  1. Si vous ne l'avez pas déjà fait, créez un compte Linode et une instance de calcul. Consultez nos guides Premiers pas avec Linode et Création d'une instance de calcul.

  2. Suivez notre guide Configuration et sécurisation d'une instance de calcul pour mettre à jour votre système. Vous pouvez également définir le fuseau horaire, configurer votre nom d'hôte, créer un compte utilisateur limité et renforcer l'accès SSH.

  3. Installez Docker sur votre système.

  4. Ce guide suppose que vous êtes à l'aise avec la ligne de commande Linux. VoirUtiliser le terminal.

  5. Ce guide suppose que vous avez une compréhension de base de Docker. De plus, vous devez déjà avoir installé Docker sur votre serveur et déployé une image Docker. VoirUne introduction à Docker.

Création d'un volume Docker

Pour commencer à comprendre les volumes Docker, vous aurez besoin d'un volume sur lequel travailler.

  1. Connectez-vous à votre Linode (ou à un autre serveur Linux) via SSH ou Lish.

  2. Créez un volume en entrant la commande suivante, en remplaçant example_volume avec l'étiquette de votre volume.

    docker volume create example_volume
    
  3. Vérifiez que le volume a été créé.

    docker volume list
    

    La sortie devrait ressembler à ceci :

    [[email protected] ~]$ docker volume list
    DRIVER    VOLUME NAME
    local     example_volume
    [[email protected] ~]$

Inspecter un volume Docker

Si vous voulez voir plus de détails sur un volume, vous pouvez utiliser le docker volume inspect commande :

docker volume inspect example_volume

Le résultat doit ressembler à ce qui suit :

[[email protected] ~]$ docker volume inspect example_volume
[
    {
        "CreatedAt": "2021-05-19T15:27:27Z",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/example_volume/_data",
        "Name": "example_volume",
        "Options": {},
        "Scope": "local"
    }
]
[[email protected] ~]$

Monter un volume Docker sur un conteneur

Pour que les données d'un conteneur persistent, vous devez avoir un volume Docker monté à l'aide de l'indicateur --mount flag dans l'docker run commande. Remplacer [volume_name] avec le nom de votre volume, [chemin] avec le chemin absolu sur lequel vous souhaitez monter le volume dans le conteneur, et [docker_image] avec le nom de votre image.

docker run --mount source=[volume_name],destination=[path] [docker_image]

Par exemple, la commande suivante monte le volume nommé example_volume au chemin /example_volume à l'intérieur d'un conteneur en utilisant ubuntu photo.

docker run -it --name=example --mount source=example_volume,destination=/example_volume ubuntu

Cette commande exécute l'image, monte le volume et connecte l'utilisateur en tant que root sur l'image Ubuntu. Une fois en tant que root, vous pouvez vérifier que "example_volume" est monté avec juste ls . Le résultat de tout cela devrait ressembler à ceci :

[[email protected] ~]$ docker run -it --name=example --mount source=example_volume,destination=/example_volume ubuntu
[email protected]:/# ls
bin   dev  example_volume  lib    lib64   media  opt   root  sbin  sys  usr
boot  etc  home            lib32  libx32  mnt    proc  run   srv   tmp  var
[email protected]:/#

Copier et partager des fichiers entre conteneurs

Les volumes Docker permettent également le partage entre conteneurs.

  1. Montez le volume en suivant les instructions de la section Montage d'un volume Docker sur un conteneur. Voici l'exemple utilisé précédemment :

    docker run -it --name=example --mount source=example_volume,destination=/example_volume ubuntu
    
  2. Changez le répertoire en example_data répertoire.

    cd example_data
    
  3. Créez un fichier de test dans le volume en entrant le touch suivant commande.

    touch example_file.txt
    
  4. Quittez ensuite le conteneur.

    exit
    
  5. Exécutez maintenant une autre image docker avec le même volume monté. Le debian l'image est utilisée dans l'exemple ci-dessous.

    docker run -it --name=example_2 --mount source=example_volume,destination=/example_volume debian
    
  6. Dans le nouveau conteneur (appelé "example_2" si vous utilisez une commande similaire à celle ci-dessus), accédez au répertoire du volume.

     cd example_volume
    
  7. Entrez ls pour voir le fichier.

    ls
    

Monter un répertoire depuis votre Linode vers un conteneur

Au lieu de créer un nouveau volume, vous pouvez également monter un répertoire depuis votre Linode (ou un autre système) vers un conteneur Docker. Ceci est accompli via des montages liés et est utile lorsque vous souhaitez stocker et accéder aux fichiers de votre conteneur directement à partir de votre système. Par rapport aux volumes, les montages liés ont des fonctionnalités limitées.

  1. Connectez-vous à votre Linode (ou à un autre serveur Linux) via SSH ou Lish.

  2. Utilisez la commande suivante pour exécuter Docker, en remplaçant [local-directory] avec le chemin absolu vers le répertoire de votre Linode que vous souhaitez monter (utilisez $(pwd) pour monter le répertoire courant). Remplacez ensuite [mount-directory] par le chemin absolu sur votre conteneur où vous souhaitez accéder aux fichiers locaux et remplacez [image] avec l'image Docker que vous souhaitez utiliser.

    docker run --rm -it -v [local-directory]:[mount-directory] [image]
    
  3. Vous êtes automatiquement connecté au conteneur. Accédez à votre répertoire de montage et affichez les fichiers.

    ls
    

    Vous devriez voir tous les fichiers que vous avez stockés dans le répertoire local.

Lectures complémentaires

Il y a beaucoup plus de Docker Volumes que nous ne pouvons aborder ici, et le cas d'utilisation de chacun sera différent. Cependant, deux excellents endroits pour en savoir plus à ce sujet se trouvent sur le site Docs de Docker lui-même :

  • Utiliser les volumes sur Docker Docs

  • Résoudre les erreurs de volume dans Docker Docs

Plus d'informations

Vous pouvez consulter les ressources suivantes pour plus d'informations sur ce sujet. Bien que ceux-ci soient fournis dans l'espoir qu'ils seront utiles, veuillez noter que nous ne pouvons pas garantir l'exactitude ou l'actualité des documents hébergés en externe.

  • Utiliser des volumes sur Docker Docs
  • Résoudre les erreurs de volume dans Docker Docs

Docker
  1. Créer des volumes logiques sous Linux avec LVM

  2. Comprendre l'espace libre / les volumes sur Ubuntu ?

  3. Comment partager des données entre des conteneurs Docker sur Ubuntu 22.04

  4. Comprendre la propriété des fichiers utilisateur dans Docker :comment éviter de modifier les autorisations des volumes liés

  5. Volume de fichier unique monté en tant que répertoire dans Docker

Expliquer les volumes Docker avec des exemples

La gestion des volumes logiques expliquée sous Linux

Comment ajouter un volume à un conteneur Docker existant

Comment exécuter Jenkins dans Docker à l'aide de Docker Compose avec des volumes

Comment accéder aux fichiers en dehors d'un conteneur Docker

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