Docker Desktop 4.6 pour Mac introduit un certain nombre de modifications qui accélère la synchronisation des fichiers entre l'hôte macOS et la VM Docker. Selon Docker, la nouvelle version peut réduire le temps nécessaire à la synchronisation des fichiers jusqu'à 98 %.
Le partage de code est l'une des trois approches prises en charge par Docker Desktop pour partager une partie du système de fichiers local avec un conteneur : bind mount, volumes nommés et copie directe de fichiers. Chacun a ses propres avantages et inconvénients, ce qui les rend les mieux adaptés à différents cas d'utilisation. Les bind mounts sont l'option la plus pratique pour partager du code que vous devrez peut-être modifier à partir du conteneur. Avant la version 4.6, cependant, Docker avertissait les développeurs d'un impact sur les performances des bind mounts subis avec de très grands référentiels ou des programmes utilisant de nombreuses dépendances externes.
Si l'on considère que la gestion moderne des dépendances peut facilement intégrer 10 000 à 100 000 fichiers dans un projet (ce qui augmente de manière linéaire la baisse des performances), cela peut entraîner des performances médiocres, car l'hôte et le conteneur restent synchronisés via le volume.
Les modifications introduites dans la version 4.6 incluent l'adoption de virtiofs en remplacement facultatif de gRPC-FUSE et améliorent considérablement les performances de partage.
L'objectif de virtiofs est de fournir une sémantique de système de fichiers local entre plusieurs machines virtuelles partageant une arborescence de répertoires. Ceci est particulièrement utile pour les VM légères et les charges de travail de conteneur, où les volumes partagés sont une exigence.
Plus précisément, selon Docker, la nouvelle version réduit de 80 % à 90 % le temps pris par des opérations telles que l'importation de 284 Mo de données dans une base de données MySQL, l'exécution de composer install pour une grande base de code PHP, ou le lancement d'une application TypeScript monolithique.
Comme mentionné, virtiofs n'est pas activé par défaut, mais peut être activé dans les fonctionnalités expérimentales de Docker Desktop. Virtiofs nécessite macOS 12.2+ pour Apple Silicon et macOS 12.3+ pour Intel.
Enfin, les développeurs intéressés doivent être conscients d'un bug connu qui peut faire échouer les conteneurs exécutés avec virtiofs en raison d'erreurs d'autorisation. Ce bug a été corrigé dans une version expérimentale que vous pouvez installer au cas où vous en auriez besoin.