BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités Bonnes Pratiques De Docker Desktop Pour Le Partage De Code

Bonnes Pratiques De Docker Desktop Pour Le Partage De Code

Dans un récent article, l'ingénieur Docker Stephen Turner a partagé quelques bonnes pratiques pour aider les développeurs comprendre le partage de fichiers entre un conteneur Docker et son hôte local et comment ses performances varient selon les systèmes d'exploitation.

Docker Desktop fournit deux mécanismes pour partager une partie du système de fichiers local avec un conteneur, à savoir le bind mount et les volumes nommés. De plus, vous pouvez copier une partie de votre système de fichiers dans le propre système de fichiers du conteneur.

Chaque approche sert le même objectif de partage de fichiers entre le système de fichiers local et celui du conteneur (ainsi qu'entre conteneurs distincts). Cependant, chaque mécanisme présente son propre équilibre entre les avantages et les inconvénients, ce qui les rend adaptés à différents cas d'utilisation.

La copie de fichiers dans un conteneur présente l'inconvénient majeur que toutes les données copiées, y compris toute modification, seront perdues lors de la suppression du conteneur. Ce n'est certainement pas un résultat souhaité si vous souhaitez partager le code que vous devez modifier.

En ce qui concerne les deux autres options, comme l'explique Stephen Turner, les bind mounts sont la solution la plus flexible, mais leurs performances sont inférieures aux shared volumes.

[...] c'est dans la nature de la virtualisation qu'il y ait toujours une petite surcharge inévitable en franchissant la frontière hôte-VM. Ce n'est que minime, mais dans un environnement de développement avec une énorme arborescence de sources et de nombreuses lectures et écritures, cela s'additionne et peut visiblement affecter les performances.

Il est important de noter que ce problème n'existe que sur les machines MacOS et Windows exécutant Docker, car Linux a un accès direct au système de fichiers bind-mounted.

Sur cette base, Stephen Turner suggère quelques critères pour comprendre quand utiliser des bind mounts ou des shared volumes.

Les bind mounts sont certainement la voie à suivre lorsque vous souhaitez partager du code que vous devez modifier. Cependant, ils peuvent être un problème pour les référentiels très volumineux où vous devez effectuer un grand nombre d'opérations de lecture/écriture. Dans ces cas, vous pouvez essayer la mise en miroir en utilisant des solutions tierces telles que Mutagen et docker-sync.

Les bind mounts, en revanche, ne sont certainement pas une bonne option pour des éléments tels que les bases de données, les arborescences ou bibliothèques de dépendances, les caches et les fichiers journaux. Dans tous ces cas, il vaut mieux utiliser des shared volumes.

Cet état de fait pourrait changer, selon Stephen Turner, grâce à Virtiofs, qui est spécialement conçu pour partager des fichiers entre un hôte et une VM. Virtiofs est déjà disponible dans un Docker Desktop preview pour MacOS.

L'article de Stephen Turner contient beaucoup plus de détails que ce qui peut être résumé ici, alors ne le manquez pas au cas où vous seriez intéressé.

 

Au sujet de l’Auteur

Evaluer cet article

Pertinence
Style

Contenu Éducatif

BT