web-dev-qa-db-fra.com

Quelle est la différence entre les montages de liaison et les volumes lors du traitement de données persistantes dans des conteneurs Docker?

Je veux savoir pourquoi nous avons deux options différentes pour faire la même chose, quelles sont les différences entre les deux.

16
Akshit Grover

Nous avons essentiellement 3 types de volumes ou de montages pour les données persistantes:

  1. Relier les montures

  2. Volumes nommés

  3. Volumes dans dockerfiles

Les montages de liaison ne font que lier un certain répertoire ou fichier de l'hôte à l'intérieur du conteneur (docker run -v /hostdir:/containerdir IMAGE_NAME)

Les volumes nommés sont des volumes que vous créez manuellement avec docker volume create VOLUME_NAME. Ils sont créés dans /var/lib/docker/volumes et ne peuvent être référencés que par leur nom. Supposons que vous créez un volume appelé "mysql_data", vous pouvez simplement le référencer comme ceci: docker run -v mysql_data:/containerdir IMAGE_NAME.

Et puis il y a des volumes dans dockerfiles, qui sont créés par l'instruction VOLUME. Ces volumes sont également créés sous /var/lib/docker/volumes mais n’ont pas un certain nom. Leur "nom" est juste une sorte de hasch. Le volume est créé lors de l'exécution du conteneur et est pratique pour enregistrer des données persistantes, que vous démarriez le conteneur avec -v ou non. Le développeur peut dire où sont les données importantes et ce qui devrait être persistant.

Que devrais-je utiliser?

Ce que vous voulez utiliser dépend principalement de vos préférences ou de votre gestion. Si vous voulez tout conserver dans la "zone de menu fixe" (/var/lib/docker), vous pouvez utiliser des volumes. Si vous souhaitez conserver votre propre structure de répertoire, vous pouvez utiliser des liaisons.

Docker recommande d'utiliser des volumes plutôt que des liaisons , car les volumes sont créés et gérés par le menu fixe et les liaisons présentent un potentiel de défaillance beaucoup plus important (également en raison de problèmes de couche 8).

Si vous utilisez des liaisons et souhaitez transférer vos conteneurs/applications sur un autre hôte, vous devez reconstruire votre structure de répertoires, où les volumes sont plus uniformes sur chaque hôte.

40
samprog

En tant que développeur, nous devons toujours comparer les options fournies par les outils ou la technologie ... Pour le montage Volume & Bind, je suggérerais de répertorier le type d'application que vous essayez de conteneuriser ... Voici les paramètres que Je considérerais avant de choisir Volume sur Bind Mount - 1. Docker fournit diverses commandes CLI aux volumes facilement à l’extérieur des conteneurs, 2. Sauvegarder, restaurer le volume est beaucoup plus facile que Bind car cela dépend du système d'exploitation hôte sous-jacent 3. Les volumes ne dépendent pas de la plate-forme et peuvent donc fonctionner aussi bien sur Linux que sur les conteneurs de fenêtres 4. Avec Bind, vous disposez de 2 technologies pour prendre en charge votre structure de répertoires d’hôte ainsi que votre menu fixe, 5. La migration des volumes est plus facile non seulement sur les machines locales, mais également sur les machines en nuage 6. Les volumes peuvent être facilement partagés entre plusieurs conteneurs

0
Abhishek Jain