Docker für Mac- Volume-Mounts verhalten sich anders als das Basis-Docker-System. Dies liegt hauptsächlich daran, dass Docker versucht, die Sandbox-Richtlinien für das Dateisystem von Apple einzuhalten.
Wie in den Docker-Einstellungen gezeigt, werden nur bestimmte Pfade von macOS exportiert.
/Users
/Volumes
/tmp
/private

/varin macOS ist eine symbolische Verknüpfung in /private. Das gilt auch für /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
Warum wird /tmpes im Freigabebereich aufgeführt, aber /varnicht (obwohl beide Teil davon sind /private)? In der Dokumentation zu Docker für Mac zu Dateisystem-Namespaces wird Folgendes erläutert:
Standardmäßig können Sie Dateien in gemeinsam nutzen /Users/, /Volumes/, /private/, und /tmpdirekt. Verwenden Sie zum Hinzufügen oder Entfernen von Verzeichnisbäumen, die nach Docker exportiert werden, die Registerkarte Dateifreigabe im Walmenü der Docker-Einstellungen -> Einstellungen -> Dateifreigabe. (Siehe Einstellungen.)
Alle anderen Pfade, die in -vBindungs-Mounts verwendet werden, stammen von der Moby Linux-VM, auf der die Docker-Container ausgeführt werden. Daher-v /var/run/docker.sock:/var/run/docker.sock sollten Argumente wie erwartet funktionieren. Wenn ein macOS-Pfad nicht freigegeben ist und in der VM nicht vorhanden ist, schlägt der Versuch, den Mount zu binden, fehl, anstatt ihn in der VM zu erstellen. Pfade, die bereits in der VM vorhanden sind und Dateien enthalten, werden von Docker reserviert und können nicht aus macOS exportiert werden.
Beachten Sie, dass dies /var/runhier ausdrücklich als Ort erwähnt wird, der von der Linux-VM anstelle von macOS bereitgestellt wird.
Wenn Sie nach einem Volume-Mount fragen, werden zuerst die Exporte des macOS-Dateisystems überprüft. Wenn dort keine Übereinstimmung vorliegt, wird als Nächstes die Linux-VM überprüft, auf der Docker ausgeführt wird. Wenn keiner von ihnen den von Ihnen angeforderten Pfad hat, schlägt die Bereitstellung fehl.
In Ihrem Fall /varwird nicht von macOS exportiert. /varexistiert in der Linux-VM, ist es aber /var/foldersnicht. Daher ist der Pfad nicht verfügbar und die Bereitstellung schlägt fehl.
Wenn Sie den Pfad in ändern /private/var, ist dies erfolgreich, da macOS den gesamten /privateDateisystembaum zum Mounten exportiert .
Um die Portabilität zu verbessern, möchten Sie möglicherweise testen, auf welcher Plattform Sie gerade arbeiten. Wenn es sich um MacOS handelt, müssen Sie dem Mount-Pfad das Präfix voranstellen /private.
-v /private/var/folders/zz/...?