Aay*_*ush 75 macos docker docker-for-mac
该命令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.
Run Code Online (Sandbox Code Playgroud)
当我打开文件共享时,我看到/ private已经列出了.
如果我尝试添加/var/folder/,它会解析为/private/var/folders/ private的子集,因此会拒绝添加.
总而言之,在我看来/var/folders/..,OS X 将目录作为子目录共享/private,因此必须为Docker所知.任何有关解决此问题的帮助将不胜感激.
作为一个实验,我用/private文件共享替换了/private/var/folders并重新启动了docker,但结果没有改变.
只是为了更完整的引用,这是.sh脚本,它运行这个python脚本,然后运行docker命令.
Dan*_*owe 92
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
Run Code Online (Sandbox Code Playgroud)
为什么/tmp列在共享面板中,但/var不是(尽管两者都是其中的一部分/private)?Docker for Mac 关于文件系统命名空间的文档说明:
默认情况下,您可以共享文件
/Users/,/Volumes/,/private/,和/tmp直接.要添加或删除导出到Docker的目录树,请使用Docker首选项whale菜单 - >首选项 - >文件共享中的文件共享选项卡.(参见偏好.)
-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.如果它们都没有您请求的路径,则挂载失败.
在您的情况下,/var不是由macOS导出./var存在于Linux VM中,但/var/folders没有.因此,路径不可用,并且安装失败.
如果更改路径/private/var,则会成功,因为macOS导出整个/private文件系统树以进行安装.
为了使事情更具可移植性,您可能需要测试当前正在运行的平台,如果是macOS,请在安装路径前加上/private.
小智 27
Docker for mac 新版本 3.0.0 需要在 Preferences>Experimental Features 中禁用使用 gRPC FUSE 进行文件共享。
小智 11
我有一个类似的问题,我/var/tmp在 Mac 中创建了一个目录,我想将它挂载到我的 docker 容器中。
通过将目录路径添加到文件来解决它,如下所示:
$ cat ~/Library/Group\ Containers/group.com.docker/settings.json
{
"filesharingDirectories" : [
"\/Users",
"\/Volumes",
"\/private",
"\/tmp",
"\/var\/tmp"
],
…
Run Code Online (Sandbox Code Playgroud)
现在我可以/var/tmp在 Docker->preference->resources->filesharing 中看到目录。然后我重新启动了docker。
然后它解决了我的安装问题。
作为替代解决方案:
将路径从 更改/private/instance1-data:/home为./instance1-data:/home
在 *nix 区域以及 Docker 中,.指示当前目录。由于 macOS 对沙盒越来越挑剔,这似乎是 macOS 的可行解决方案。只需instance1在同一目录中创建所需的文件夹。
此解决方案的另一个优点是无需docker-compose使用sudo. 无论如何,在这种情况下它不会造成任何伤害,但仍然是一个加分项。
小智 7
卸载版本 20 并下载旧版本稳定版https://desktop.docker.com/mac/stable/48506/Docker.dmg
| 归档时间: |
|
| 查看次数: |
50667 次 |
| 最近记录: |