Podłączenia woluminów Docker for Mac zachowują się inaczej niż podstawowy system Docker. Dzieje się tak głównie dlatego, że Docker stara się przestrzegać wytycznych Apple dotyczących piaskownicy systemu plików.
Jak pokazano w preferencjach Dockera, tylko niektóre ścieżki są eksportowane przez macOS.
/Users
/Volumes
/tmp
/private

/varw macOS jest dowiązaniem symbolicznym do /private. Dotyczy to również /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
Dlaczego jest /tmpwymieniony w panelu udostępniania, a /varnie (mimo że oba są częścią /private)? Dokumentacja Docker for Mac dotycząca przestrzeni nazw systemów plików wyjaśnia:
Domyślnie można udostępniać pliki /Users/, /Volumes/, /private/, i /tmpbezpośrednio. Aby dodać lub usunąć drzewa katalogów, które są eksportowane do Dockera, użyj zakładki Udostępnianie plików w menu wieloryba preferencji Dockera -> Preferencje -> Udostępnianie plików. (Zobacz Preferencje.)
Wszystkie inne ścieżki używane w instalacjach -vpowiązań pochodzą z maszyny wirtualnej Moby Linux z kontenerami Docker, więc argumenty takie jak -v /var/run/docker.sock:/var/run/docker.sockpowinny działać zgodnie z oczekiwaniami. Jeśli ścieżka macOS nie jest udostępniona i nie istnieje na maszynie wirtualnej, próba powiązania instalacji zakończy się niepowodzeniem, zamiast utworzyć ją na maszynie wirtualnej. Ścieżki, które już istnieją na maszynie wirtualnej i zawierają pliki, są zarezerwowane przez platformę Docker i nie można ich wyeksportować z systemu macOS.
Zwróć uwagę, że /var/runjest tutaj wyraźnie wymienione jako miejsce, które zostanie zamontowane z maszyny wirtualnej z systemem Linux, a nie z systemu macOS.
Kiedy poprosisz o zamontowanie woluminu, najpierw sprawdzane są eksportowanie systemu plików macOS. Jeśli nie ma tam dopasowania, maszyna wirtualna z systemem Linux, na której działa platforma Docker, jest następnie sprawdzana. Jeśli żaden z nich nie ma żądanej ścieżki, instalacja kończy się niepowodzeniem.
W twoim przypadku /varnie jest eksportowany przez macOS. /varistnieje na maszynie wirtualnej z systemem Linux, ale /var/folderstak nie jest. Dlatego ścieżka jest niedostępna, a instalacja kończy się niepowodzeniem.
Jeśli zmienisz ścieżkę na /private/var, to się powiedzie, ponieważ macOS eksportuje całe /privatedrzewo systemu plików do zamontowania.
Aby uczynić rzeczy bardziej przenośnymi, możesz przetestować, na której platformie aktualnie pracujesz, a jeśli jest to macOS, poprzedz ścieżkę montowania przedrostkiem /private.
-v /private/var/folders/zz/...?