⚠️ Traduction non officielle - Cette documentation est une traduction communautaire non officielle de Docker.

Partages de fichiers synchronisés

Subscription: Pro Team Business

Le partage de fichiers synchronisé est un mécanisme alternatif de partage de fichiers qui fournit un partage de fichiers hôte-vers-VM rapide et flexible, améliorant les performances de bind mount grâce à l'utilisation de caches de système de fichiers synchronisés.

Image du panneau Partages de fichiers synchronisés

À qui s'adresse-t-il ?

Le partage de fichiers synchronisé est idéal pour les développeurs qui :

  • Ont de gros dépôts ou monorepos avec 100 000 fichiers ou plus totalisant des centaines de mégaoctets ou même des gigaoctets.
  • Utilisent des systèmes de fichiers virtuels, tels que VirtioFS, gRPC FUSE et osxfs, qui ne passent plus à l'échelle avec leurs bases de code.
  • Rencontrent régulièrement des limitations de performance.
  • Ne veulent pas se soucier de la propriété des fichiers ou passer du temps à résoudre des informations de propriété de fichiers conflictuelles lors de la modification de plusieurs conteneurs.

Comment fonctionne le partage de fichiers synchronisé ?

Un partage de fichiers synchronisé se comporte exactement comme un partage de fichiers virtuel, mais tire parti d'un moteur de synchronisation de code haute performance et à faible latence pour créer un cache synchronisé des fichiers hôtes sur un système de fichiers ext4 dans la VM Docker Desktop. Si vous apportez des modifications au système de fichiers sur l'hôte ou dans les conteneurs de la VM, cela se propage via une synchronisation bidirectionnelle.

Après avoir créé une instance de partage de fichiers, tout conteneur utilisant un bind mount qui pointe vers un emplacement sur le système de fichiers hôte correspondant à l'emplacement de partage de fichiers synchronisé spécifié, ou un sous-répertoire à l'intérieur, utilise la fonctionnalité Partages de fichiers synchronisés. Les bind mounts qui ne satisfont pas cette condition sont transmis au mécanisme de bind-mounting normal du système de fichiers virtuel, par exemple VirtioFS ou gRPC-FUSE.

Note

Le partage de fichiers synchronisé n'est pas utilisé par les volumes hostPath de Kubernetes dans Docker Desktop.

Important

Le partage de fichiers synchronisé n'est pas disponible sur WSL ou lors de l'utilisation de conteneurs Windows.

Créer une instance de partage de fichiers

Pour créer une instance de partage de fichiers :

  1. Connectez-vous à Docker Desktop.
  2. Dans Paramètres, naviguez vers l'onglet Partage de fichiers dans la section Ressources.
  3. Dans la section Partages de fichiers synchronisés, sélectionnez Créer un partage.
  4. Sélectionnez un dossier hôte à partager. Le partage de fichiers synchronisé devrait s'initialiser et être utilisable.

Les partages de fichiers prennent quelques secondes à s'initialiser car les fichiers sont copiés dans la VM Docker Desktop. Pendant ce temps, l'indicateur de statut affiche Préparation. Il y a aussi une icône de statut dans le pied de page du tableau de bord Docker Desktop qui vous tient informé.

Lorsque l'indicateur de statut affiche Surveillance des changements du système de fichiers, vos fichiers sont disponibles à la VM via tous les mécanismes de bind mount standard, que ce soit -v en ligne de commande ou spécifié dans votre fichier compose.yml.

Note

Lorsque vous créez un nouveau service, définir l' option de consistance de bind mount sur :consistent contourne les partages de fichiers synchronisés.

Tip

Docker Compose peut automatiquement créer des partages de fichiers pour les bind mounts. Assurez-vous d'être connecté à Docker avec un abonnement payant et d'avoir activé à la fois Accéder aux fonctionnalités expérimentales et Gérer les partages de fichiers synchronisés avec Compose dans les paramètres de Docker Desktop.

Explorer votre instance de partage de fichiers

La section Partages de fichiers synchronisés affiche toutes vos instances de partage de fichiers et fournit des informations utiles sur chaque instance, notamment :

  • L'origine du contenu du partage de fichiers
  • Une mise à jour de statut
  • Combien d'espace chaque partage de fichiers utilise
  • Le nombre d'entrées du système de fichiers
  • Le nombre de liens symboliques
  • Quel(s) conteneur(s) utilise(nt) l'instance de partage de fichiers

Sélectionner une instance de partage de fichiers développe le menu déroulant et expose ces informations.

Utiliser .syncignore

Vous pouvez utiliser un fichier .syncignore à la racine de chaque partage de fichiers, pour exclure les fichiers locaux de votre instance de partage de fichiers. Il supporte la même syntaxe que les fichiers .dockerignore et exclut, et/ou ré-inclut, les chemins de la synchronisation. Les fichiers .syncignore sont ignorés à tout autre emplacement que la racine du partage de fichiers.

Quelques exemples de choses que vous pourriez vouloir ajouter à votre fichier .syncignore sont :

  • De gros répertoires de dépendances, par exemple les répertoires node_modules et composer (sauf si vous comptez y accéder via un bind mount)
  • Les répertoires .git (encore une fois, sauf si vous en avez besoin)

En général, utilisez votre fichier .syncignore pour exclure les éléments qui ne sont pas critiques pour votre flux de travail, en particulier ceux qui seraient lents à synchroniser ou utiliseraient un stockage important.

Problèmes connus

  • Les modifications apportées à .syncignore n'entraînent pas de suppressions immédiates sauf si le partage de fichiers est recréé. En d'autres termes, les fichiers qui sont nouvellement ignorés en raison de modifications dans le fichier .syncignore restent à leur emplacement actuel, mais ne sont plus mis à jour pendant la synchronisation.

  • Les instances de partage de fichiers sont actuellement limitées à environ 2 millions de fichiers par partage. Pour de meilleures performances, si vous avez une instance de partage de fichiers de cette taille, essayez de la décomposer en plusieurs partages correspondant à des emplacements de bind mount individuels.

  • Les conflits de casse, dus au fait que Linux est sensible à la casse et macOS/Windows sont seulement préservant la casse, s'affichent comme des problèmes Le fichier existe dans l'interface graphique. Ceux-ci peuvent être ignorés. Cependant, s'ils persistent, vous pouvez signaler le problème.

  • Le partage de fichiers synchronisé signale de manière proactive les problèmes temporaires, ce qui peut entraîner l'apparition occasionnelle d'indicateurs Conflit et Problème dans l'interface graphique pendant la synchronisation. Ceux-ci peuvent être ignorés. Cependant, s'ils persistent, vous pouvez signaler le problème.

  • Si vous passez de WSL2 à Hyper-V sur Windows, Docker Desktop doit être complètement redémarré.

  • Les chemins Windows de style POSIX ne sont pas supportés. Évitez de définir la variable d'environnement COMPOSE_CONVERT_WINDOWS_PATHS dans Docker Compose.

  • Si vous n'avez pas les bonnes permissions pour créer des liens symboliques et que votre conteneur tente de créer des liens symboliques dans votre instance de partage de fichiers, un message d'erreur impossible de créer un lien symbolique s'affiche. Pour les utilisateurs Windows, consultez la documentation Créer des liens symboliques de Microsoft pour les meilleures pratiques et l'emplacement du paramètre de politique de sécurité Créer des liens symboliques. Pour les utilisateurs Mac et Linux, vérifiez que vous avez les permissions d'écriture sur le dossier.