Docker pour Mac volume supports de se comporter différemment de la base de Support système. C'est surtout parce que Docker essaie de se conformer à Apple de fichiers du sandbox de lignes directrices.
Comme indiqué dans le Panneau de préférences, seulement certains chemins sont exportées par macOS.
/Users
/Volumes
/tmp
/private
/var
dans macOS est un lien symbolique, en /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 - /tmp
répertoriés dans le panneau de partage, mais /var
n'est pas (même si les deux sont une partie de l' /private
)? Docker pour Mac de la documentation sur les espaces de noms du système de fichiers explique:
Par défaut, vous pouvez partager des fichiers en /Users/
, /Volumes/
, /private/
, et /tmp
directement. Pour ajouter ou supprimer le répertoire des arbres qui sont exportés vers le Panneau, utilisez l'onglet partage de Fichiers dans le Panneau de préférences de la baleine
menu -> Préférences -> partage de Fichiers. (Voir Les Préférences.)
Tous les autres chemins d'accès utilisés en -v
lier les supports sont obtenus à partir de la Moby machine virtuelle Linux exécutant les conteneurs Docker, donc des arguments tels que -v /var/run/docker.sock:/var/run/docker.sock
devrait fonctionner comme prévu. Si un macOS chemin n'est pas partagé et n'existe pas dans la machine virtuelle, d'une tentative de lier monter il va échouer plutôt que de la créer dans la VM. Les chemins qui existent déjà dans la machine virtuelle et contiennent les fichiers sont réservés par le menu fixe et ne peuvent pas être exportées à partir de macOS.
Notez que /var/run
est spécifiquement mentionné ici comme un lieu qui pourrait être installé à partir de la machine virtuelle Linux, au lieu de partir de macOS.
Lorsque vous demandez un montage de volume, macOS système de fichiers, les exportations sont vérifiés en premier lieu. Si aucune correspondance n'est trouvée là, la machine virtuelle Linux où le Panneau est en cours d'exécution est cochée. Si aucun d'entre eux ont le chemin que vous avez demandé, le montage échoue.
Dans votre cas, /var
n'est pas exportée par macOS. /var
existe dans la machine virtuelle Linux, mais /var/folders
ne le sont pas. Par conséquent, le chemin n'est pas disponible, et le montage échoue.
Si vous modifiez le chemin d'accès /private/var
, alors qu'il va réussir, parce que macOS exportations de l'ensemble de l' /private
arborescence du système de fichiers pour le montage.
Afin de rendre les choses plus portable, vous pouvez tester la plate-forme sont actuellement en cours d'exécution, et si c'est macOS, préfixe du chemin de montage avec /private
.