Docker 无法在 Mac OS 上的 /var 下挂载任何文件夹

Docker cannot mount any folder under /var on Mac OS

我在 Mac os 10.15.3 上升级到最新版本的 docker 之后。我再次遇到 Mounts denied 错误。

以下是版本:

Docker desktop: 2.2.0.3(42716)
Engine: 19.03.5
Mac osx: Catalina(10.15.3)
Docker compose: 1.25.4

我尝试将 /var/data/test:/var/data/test 挂载到 docker-compose 文件中。然后我在File Sharing菜单里选了ose文件夹,结果是/private/var/data/test,不能编辑了

如果我尝试 运行 docker-compose up,总是会出现 Mounts denied 错误。

ERROR: for c9430ce45017_xxx-SNAPSHOT  Cannot start service xxx: Mounts denied:
The path /var/data/test
is not shared from OS X and is not known to Docker.
You can configure shared paths from Docker -> Preferences... -> File Sharing.
See https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.

更新: 正如@tripleee 建议的那样,我将 compose 文件编辑为 /private/var/data/test:/var/data/test,它可以工作。但它不会在 Linux.

的服务器上运行

感谢@GordonDavisson 分享你的两分钱。

即使我无法通过 docker 桌面 GUI 设置 /var/data/test,我最终还是从命令行设置了共享文件目录。

GUI 中显示的共享文件夹列表也可以在 ~/Library/Group Containers/group.com.docker/settings.json 中编辑。

如果用户已经修改过共享文件夹,"filesharingDirectories"数组将已经存在于settings.json中,您只需在json数组中添加路径即可。如果未修改,则数组不存在于 settings.json 中,但除了默认路径外,您还可以将其添加到您的路径中:

"filesharingDirectories" : [
    "/Users",
    "/Volumes",
    "/private",
    "/tmp", 
    "/usr/local/share/dotnet/sdk/NuGetFallbackFolder"
  ]

最终,应用程序需要重新启动,以便文件夹在 VM 中可见。

致谢 link

最后,我把/var/data/test放在settings.json里,重启docker就可以了。