I montaggi di volumi Docker per Mac si comportano in modo diverso rispetto al sistema Docker di base. Ciò è principalmente dovuto al fatto che Docker cerca di conformarsi alle linee guida sandbox del filesystem di Apple.
Come mostrato nelle preferenze di Docker, solo alcuni percorsi vengono esportati da macOS.
/Users
/Volumes
/tmp
/private

/varin macOS è un collegamento simbolico in /private. Questo vale anche per /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
Perché è /tmpelencato nel pannello di condivisione, ma /varnon lo è (anche se entrambi ne fanno parte /private)? La documentazione di Docker per Mac sugli spazi dei nomi del file system spiega:
Per impostazione predefinita, è possibile condividere i file in /Users/, /Volumes/, /private/, e /tmpdirettamente. Per aggiungere o rimuovere alberi di directory esportati in Docker, utilizzare la scheda Condivisione file nel menu balena delle preferenze di Docker -> Preferenze -> Condivisione file. (Vedi Preferenze.)
Tutti gli altri percorsi utilizzati nei -vmontaggi bind provengono dalla VM Moby Linux che esegue i contenitori Docker, quindi argomenti come -v /var/run/docker.sock:/var/run/docker.sockdovrebbero funzionare come previsto. Se un percorso macOS non è condiviso e non esiste nella VM, un tentativo di collegarlo al montaggio fallirà invece di crearlo nella VM. I percorsi già esistenti nella VM e che contengono file sono riservati da Docker e non possono essere esportati da macOS.
Nota che /var/runè specificamente menzionato qui come un luogo che verrebbe montato dalla VM Linux, invece che da macOS.
Quando chiedi il montaggio di un volume, le esportazioni del filesystem macOS vengono controllate per prime. Se non c'è corrispondenza lì, viene controllata la VM Linux su cui è in esecuzione Docker. Se nessuno dei due ha il percorso richiesto, il montaggio non riesce.
Nel tuo caso, /varnon viene esportato da macOS. /varesiste nella VM Linux, ma /var/foldersnon lo è. Pertanto, il percorso non è disponibile e il montaggio non riesce.
Se modifichi il percorso in /private/var, avrà successo, perché macOS esporta l'intero /privatealbero del filesystem per il montaggio.
Per rendere le cose più portabili, potresti voler testare su quale piattaforma sei attualmente in esecuzione e, se è macOS, anteporre al percorso di montaggio /private.
-v /private/var/folders/zz/...?