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

Que sont les volumes Docker et comment les utilisez-vous ?

Par défaut, les conteneurs Docker sont entièrement sans état. Les données stockées sur le conteneur sont éphémères et seront effacées à la fermeture du conteneur. Ce n'est évidemment pas idéal pour de nombreuses applications, donc Docker fournit quelques façons de gérer l'état.

Que sont les volumes ?

Le moyen le plus simple de rendre les données Docker persistantes consiste à lier les montages , qui lient littéralement un emplacement sur le disque de l'hôte à un emplacement sur le disque du conteneur. Ceux-ci sont simples à créer et à utiliser, mais sont un peu compliqués car vous devez configurer les répertoires et les gérer vous-même.

Les volumes sont comme des disques durs virtuels gérés par Docker. Docker gère leur stockage sur disque (généralement dans /var/lib/docker/volumes/ ), et leur donne un nom unique facilement mémorisable plutôt qu'un chemin de répertoire. Il est facile de les créer et de les supprimer à l'aide de Docker CLI.

Ceux-ci ont quelques autres avantages en plus d'être gérés par Docker. Ils fonctionnent à la fois sur des conteneurs Linux et Windows, ils peuvent être partagés de manière plus sûre entre plusieurs conteneurs, et les pilotes de volume permettent aux fournisseurs de cloud de fournir un hébergement à distance pour les données sous-jacentes. Dans l'ensemble, les volumes sont plus faciles à utiliser que les montages liés et sont recommandés par Docker pour la gestion de l'état.

Bien sûr, vous devez déterminer si vous avez vraiment besoin que les données Docker soient stockées sur le serveur. Pour de nombreuses applications, l'utilisation d'un magasin de données distant externe comme Amazon S3 ou d'une base de données externe suffit pour stocker les données qu'elles utilisent sans les immobiliser sur le serveur frontal.

Comment les utilisez-vous ?

Vous pouvez créer un nouveau volume à partir de la ligne de commande avec la commande suivante :

docker volume create nginx-config

Et puis, lorsque vous allez exécuter votre conteneur Docker, liez-le à la cible dans le conteneur avec le --mount drapeau :

docker run -d 
--name devtest 
--mount source=nginx-config,target=/etc/nginx 
nginx:latest

Si vous exécutez docker inspect <name> , vous verrez le volume répertorié sous Mounts rubrique.

Si vous utilisez Docker Compose, la configuration est également simple. Ajoutez simplement un volumes entrée pour chaque service de conteneur dont vous disposez, puis mappez un nom de volume à un emplacement dans l'invité. Vous devrez également fournir une liste de volumes dans un volumes de niveau supérieur. clé pour Compose à provisionner.

version: "3.0"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - nginx-config:/etc/nginx/
volumes:
  nginx-config:

Cela créera automatiquement le volume pour ce Compose. Si vous souhaitez utiliser un volume prédéfini en dehors de Compose, spécifiez external: true dans la configuration des volumes :

volumes:
  cms-content:
    external: true

Si vous préférez simplement effectuer un montage lié et ne pas vous soucier des volumes, entrez simplement un nom de chemin à la place du nom de volume et renoncez à définir les noms de volume.

version: "3.0"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - /docker/nginx-config/:/etc/nginx/

Vous pouvez lire la documentation complète de Docker sur l'utilisation des volumes avec Compose si votre cas d'utilisation nécessite quelque chose de plus spécifique que cela.

Transférer des volumes Docker

Les volumes Docker ne sont que des dossiers créés automatiquement et stockés dans /var/lib/docker/volumes/ , chaque volume étant stocké sous ./volumename/_data/ . Pour sauvegarder et restaurer, vous pouvez simplement sauvegarder ces volumes directement.

Si vous souhaitez plutôt utiliser la CLI Docker, ils ne fournissent malheureusement pas un moyen facile de le faire. Pour sauvegarder les volumes d'un conteneur, vous aurez besoin du nom du conteneur, ainsi que de l'emplacement de montage dans lequel les données sont stockées.

La façon de le faire est un peu un hack - vous devrez exécuter une commande dans un nouveau conteneur Docker, lier le montage du répertoire shell actuel, monter le volume sur ce conteneur, puis tar le répertoire dans une sauvegarde. Vous vous retrouverez avec un backup.tar du volume :

docker run --rm --volumes-from containername -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /mountlocation

Ensuite, de la même manière, vous pouvez extraire l'archive dans le répertoire cible :

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

C'est toujours mieux que d'avoir à connaître l'emplacement de l'hôte, vous pouvez donc automatiser cela si vous le souhaitez.


Docker
  1. Journaux Docker :ce qu'ils sont et comment les utiliser (avec exemples)

  2. Comment installer et utiliser Docker dans Ubuntu 20.04

  3. Quels miniatures supplémentaires sont disponibles et comment les installer ?

  4. Comment installer et utiliser Docker Compose sur CentOS

  5. Que sont les modes SELinux et comment les configurer

Comment installer et utiliser Docker Compose sur Ubuntu 22.04

Comment installer et utiliser Docker sur Ubuntu 22.04

Qu'est-ce que Docker Compose et comment l'utiliser ?

Comment installer et utiliser Docker sur Ubuntu 20.04

Qu'est-ce que PPA dans Ubuntu Linux et comment les utiliser

Comment installer et utiliser Docker sur AlmaLinux 8