将 Virtualbox 共享文件夹挂载为在来宾操作系统上运行的 Docker 的卷

Posted

技术标签:

【中文标题】将 Virtualbox 共享文件夹挂载为在来宾操作系统上运行的 Docker 的卷【英文标题】:Mount a Virtualbox shared folder as a volume for Docker running on the guest OS 【发布时间】:2017-05-26 00:48:50 【问题描述】:

我有一台运行 OS X Sierra(主机操作系统)的 Mac,我正在使用 VirtualBox 来运行 Xubuntu 16.04(客户操作系统)并在客户操作系统中完成我的所有开发工作。我已经使用 VirtualBox Guest Additions 设置了一个共享文件夹,该文件夹安装在 /media/sf_Projects 并且也从 /home/me/Projects 符号链接。

我在 Xubuntu 来宾操作系统中安装了 Docker,我正在尝试在容器中运行应用程序(Jupyter notebook),该容器需要您装载数据卷以映射到其内部文件夹之一。

当我使用 /media/sf_Projects 或 /home/me/Projects 使用 -v 开关进行挂载时,应用程序给我一个 404 错误,提示该路径不存在。我认为这很奇怪,因为就应用程序而言,它是根目录。因此,我尝试使用父目录 /media 或 /home/me 进行挂载,它工作正常,并找到了除 Projects 文件夹之外的所有其他姐妹文件夹。所以看来 Docker 无法读取我的项目路径。

将我的 VirtualBox 共享文件夹挂载到 Docker 是不是我做错了什么?还是我做的不可能?

【问题讨论】:

我以 Jose 的回答为出发点解决了我的问题。我已经记录了我在这里采取的步骤 -> gist.github.com/kentwait/ea49b270f4f7480541409c5ded093ec9 【参考方案1】:

基本上,问题在于共享文件夹未在 VM 启动时挂载。要解决此问题,请在 VM 启动后运行 sudo mount -t vboxsf sharename /path

在 Docker Machine Github 中注册了一个关于此问题的问题。 https://github.com/docker/machine/issues/1814

【讨论】:

所以这里的问题是依赖于 VBox 来宾添加?我将尝试通过 fstab 或 rc.local 安装,看看会发生什么 好的,只是为了更新。基于这个线索,我通过 fstab 挂载并将vboxsf 添加到/etc/modules 以便它在启动时挂载。它现在工作。谢谢!

以上是关于将 Virtualbox 共享文件夹挂载为在来宾操作系统上运行的 Docker 的卷的主要内容,如果未能解决你的问题,请参考以下文章

使用命令别名来简化VirtualBox虚拟机共享文件夹的使用

在virtualbox来宾中设置共享

使用 boot2docker 从主机共享代码目录不会在来宾上调用 inotify

Vagrant 无法挂载 VirtualBox 共享文件夹

virtualbox ubuntu16.04 自动挂载共享文件夹

Ubuntu virtualbox修改fstab自动挂载共享文件夹,系统无法启动