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

Posted

技术标签:

【中文标题】使用 boot2docker 从主机共享代码目录不会在来宾上调用 inotify【英文标题】:Sharing code directory from host with boot2docker does not call inotify on guest 【发布时间】:2014-11-16 11:54:01 【问题描述】:

我正在尝试使用 boot2docker/Virtualbox 设置开发环境。与 docker 容器共享主机上的文件夹是可行的,但由于它是通过 Virtualbox 共享文件夹共享的,因此 inotify 不会在容器内触发(并且代码不会重新加载)。

有没有办法使用 boot2docker 将源文件夹放入 docker 映像中,但仍会在容器中触发 inotify?我宁愿不使用轮询,因为在 Virtualbox 共享中使用轮询会在主机上占用大量 CPU。

【问题讨论】:

也许github.com/dmatora/vagrant-unison inotify 事件在 Linux 下会按预期触发,但不会在 boot2docker 中触发。 :( 希望 Docker 开发人员正在关注! 我决定换一种方式,将所有源代码放在一个 docker 容器中。通过这样做,inotify 应该会触发,而且对源代码的所有更改都可以立即在任何链接的容器中使用。在这里查看我的项目:dockershell.io 【参考方案1】:

这是 boot2docker 的限制,因为这种双层间接性,你必须通过一个使用 Virtual box,另一个是使用 docker。看起来你最好设置自己的 Vagrant 机器并使用一种替代方法来共享文件夹,无论是通过上面评论中提到的 NFS、RSYNC 或 Unison 插件

【讨论】:

以上是关于使用 boot2docker 从主机共享代码目录不会在来宾上调用 inotify的主要内容,如果未能解决你的问题,请参考以下文章

求大神帮忙写个批处理,实现从网络共享文件夹上拷贝文件到本地指定目录。

如何将文件从 docker 容器共享到主机

docker~dockertoolbox的加速器

怎么把Windows主机上的目录共享到Ubuntu上

Vmware虚拟机Ubuntu文件共享共享剪切板以及自动挂载

jenkins发布部分更新文件