坐骑否认。路径 ... 不从 OS X 共享,并且不为 Docker 所知

新手上路,请多包涵

命令 docker run -v /var/folders/zz/... 产生以下错误。

 docker: Error response from daemon: Mounts denied:
The paths /var/folders/zz/... and /var/folders/zz/...
are not shared from OS X and are not known to Docker.
You can configure shared paths from Docker -> Preferences... -> File Sharing.

当我打开文件共享时,我看到 /private 已经列出。

如果我尝试添加 /var/folder/ ,它会解析为 /private/var/folders ,这是 /private 的子集,因此添加被拒绝。

总而言之,在我看来,目录 /var/folders/.. 被 OS X 共享为 /private 的子目录,因此 Docker 必须知道。任何有关解决此问题的帮助将不胜感激。

作为实验,我将文件共享中的 /private /private/var/folders 并重新启动 docker 但结果没有改变。

只是为了更完整的参考,这是 .sh 脚本,它运行 这个 python 脚本,它又运行 docker 命令。

原文由 Aayush 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 509
2 个回答

Docker for Mac 卷挂载的行为与基本 Docker 系统不同。这主要是因为 Docker 试图遵守 Apple 的文件系统沙箱指南。

如 Docker 的首选项中所示,macOS 仅导出某些路径。

  • /Users
  • /Volumes
  • /tmp
  • /private

文件共享首选项面板

/var 在 macOS 中是指向 /private 的符号链接。 /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

为什么 /tmp 列在共享面板中,但 /var 没有(即使两者都是 /private 的一部分)? Docker for Mac 关于文件系统命名空间的文档 解释说:

默认情况下,您可以直接共享 /Users/ , /Volumes/ , /private//tmp 中的文件。要添加或删除导出到 Docker 的目录树,请使用 Docker 首选项鲸鱼菜单 -> 首选项 -> 文件共享中的文件共享选项卡。 (请参阅首选项。)

-v 绑定挂载中使用的所有其他路径均来自运行 Docker 容器的 Moby Linux VM, 因此 -v /var/run/docker.sock:/var/run/docker.sock 等参数应该按预期工作。如果 macOS 路径未共享且在 VM 中不存在,则尝试绑定挂载它会失败,而不是在 VM 中创建它。 VM 中已存在且包含文件的路径由 Docker 保留,无法从 macOS 导出。

请注意,此处特别提到 /var/run 作为将从 Linux VM 而非 macOS 安装的位置。

当您要求安装卷时,首先检查 macOS 文件系统导出。如果那里没有匹配,接下来检查运行 Docker 的 Linux VM。如果它们都没有您请求的路径,则安装失败。

在您的情况下,macOS 不会导出 /var/var 存在于 Linux VM 中,但 /var/folders 不存在。因此,路径不可用,挂载失败。

如果将路径更改为 /private/var ,那么它会成功,因为 macOS 会导出整个 /private 文件系统树进行挂载。

为了使事情更便携,您可能需要测试您当前运行的平台,如果是 macOS,请在挂载路径前加上 /private

原文由 Dan Lowe 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用 Docker for mac 的新版本 3.0.0,您需要在 Preferences>Experimental Features 中禁用使用 gRPC FUSE 进行文件共享。

原文由 François Alexandre COLOMBANI 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题