mac docker 使用 osxfs 的卷挂载不工作

mac docker volume mount using osxfs not working

Docker Mac 的桌面开始使用 osxfs 支持在 MacOS 上安装卷。根据 their page,这样的命令应该将 ~/Desktop 目录挂载到 docker 容器:

docker run -it -v ~/Desktop:/Desktop r-base bash

虽然我确实看到了预期的 Desktop 目录,但它的内容是空的:

root@80cb534e4eeb:/# ls
bin  boot  Desktop  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@80cb534e4eeb:/# ls Desktop/
root@80cb534e4eeb:/# exit
exit 

而本地Desktop目录下肯定有文件

Users-MacBook-Pro:~ user$ ls Desktop/
Screen Shot 2019-03-25 at 10.34.58.png      Screen Shot 2019-03-25 at 22.26.10.png      Screen Shot 2019-03-27 at 07.34.55.png
Screen Shot 2019-03-25 at 10.35.59.png      Screen Shot 2019-03-25 at 22.26.11.png      Screen Shot 2019-03-28 at 15.14.48.png
Screen Shot 2019-03-25 at 22.26.08.png      Screen Shot 2019-03-25 at 22.47.32.png      Screen Shot 2019-04-05 at 09.26.12.png
Screen Shot 2019-03-25 at 22.26.10 1.png    Screen Shot 2019-03-27 at 07.34.33.png 

/Users 目录应该可以根据首选项 window 访问。 docker 配置似乎有问题,但我还没有发现任何类似问题的报告。大多数与 osxfs 相关的问题都与 IO 性能有关。关于如何进一步 solve/investigate 这个问题有什么想法吗?

Docker 在首选项中恢复出厂设置解决了这个问题,但根本原因仍然未知。解决此类问题的一种方法是卷装载 Docker 为 mac 使用的 linux VM 的根目录并四处查看。这可以通过以下方式完成:

docker run --rm -v /:/vm_root --entrypoint=sh alpine -c 'ls -l /vm_root/<path in macOS>'

最近有人在 Mac 上的 Docker 版本中遇到类似问题,这对我的情况有所帮助。 我在用 Docker版本:20.10.10 Docker 桌面版:4.2.0

在“首选项”>“常规”中,默认情况下选中“使用 gRPC FUSE 进行文件共享”选项。取消选中该选项应用并重新启动。

这对我来说 -v 选项开始正常工作后,我可以轻松地在我的 Mac OS 主机和 Docker 容器之间共享文件。