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

Max*_*eng 2 macos docker docker-compose macos-catalina

在 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
Run Code Online (Sandbox Code Playgroud)

我尝试挂载/var/data/test:/var/data/test在 docker-compose 文件中。我在File Sharing菜单中选择了文件夹,结果是/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.
Run Code Online (Sandbox Code Playgroud)

更新: 正如@tripleee 所建议的,我将撰写文件编辑为/private/var/data/test:/var/data/test,它可以工作。但它不适用于 Linux 的服务器。

Max*_*eng 6

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

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

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"
  ]
Run Code Online (Sandbox Code Playgroud)

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

归功于此链接

最后,我放入/var/data/testsettings.json,重启docker后就可以了。