Les montages de volume Docker pour Mac se comportent différemment du système Docker de base. Ceci est principalement dû au fait que Docker tente de se conformer aux directives du sandbox du système de fichiers d'Apple.
Comme indiqué dans les préférences de Docker, seuls certains chemins sont exportés par macOS.
/Users
/Volumes
/tmp
/private

/vardans macOS est un lien symbolique vers /private. Cela est également vrai pour /tmp:
$ ls -ld /tmp /var
lrwxr-xr-x@ 1 root wheel 11 Jan 26 16:18 /tmp -> private/tmp
lrwxr-xr-x@ 1 root wheel 11 Jan 26 16:18 /var -> private/var
Pourquoi est /tmprépertorié dans le panneau de partage, mais /varne l'est pas (même si les deux en font partie /private)? La documentation de Docker pour Mac sur les espaces de noms des systèmes de fichiers explique:
Par défaut, vous pouvez partager des fichiers dans /Users/, /Volumes/, /private/et /tmpdirectement. Pour ajouter ou supprimer des arborescences de répertoires exportées vers Docker, utilisez l'onglet Partage de fichiers dans le menu baleine des préférences de Docker -> Préférences -> Partage de fichiers. (Voir Préférences.)
Tous les autres chemins utilisés dans les -vmontages de liaison proviennent de la machine virtuelle Moby Linux exécutant les conteneurs Docker, de sorte que les arguments tels que -v /var/run/docker.sock:/var/run/docker.sockdevraient fonctionner comme prévu. Si un chemin macOS n'est pas partagé et n'existe pas dans la machine virtuelle, une tentative de liaison de montage échouera plutôt que de le créer dans la machine virtuelle. Les chemins qui existent déjà dans la machine virtuelle et contiennent des fichiers sont réservés par Docker et ne peuvent pas être exportés depuis macOS.
Notez que cela /var/runest spécifiquement mentionné ici comme un endroit qui serait monté à partir de la machine virtuelle Linux, au lieu de macOS.
Lorsque vous demandez un montage de volume, les exportations du système de fichiers macOS sont vérifiées en premier. S'il n'y a pas de correspondance, la machine virtuelle Linux sur laquelle Docker est exécuté est ensuite vérifiée. Si aucun d'eux n'a le chemin que vous avez demandé, le montage échoue.
Dans votre cas, /varn'est pas exporté par macOS. /varexiste dans la machine virtuelle Linux, mais /var/folderspas. Par conséquent, le chemin d'accès n'est pas disponible et le montage échoue.
Si vous modifiez le chemin vers /private/var, cela réussira, car macOS exporte l'intégralité de l' /privatearborescence du système de fichiers pour le montage.
Afin de rendre les choses plus portables, vous voudrez peut-être tester la plate-forme sur laquelle vous utilisez actuellement, et s'il s'agit de macOS, préfixez le chemin de montage avec /private.
-v /private/var/folders/zz/...?