Docker:如何将主机文件夹与容器文件夹同步?

我正在使用由Node提供支持的网站。 所以我做了一个简单的Dockerfile,将我的站点的文件添加到容器的FS,安装Node并运行应用程序,当我运行容器,暴露私人端口80。

但是,如果我想更改该应用程序的文件,我已经重build了容器映像并重新运行它。 这需要几秒钟。

有没有一种简单的方法来进行某种“实时同步”,比如NFS,让我的主机系统的应用程序文件与正在运行的容器同步?

这样,我只需要重新启动它就可以应用更改,如果我使用了supervisor ,它将自动完成。

你可以使用卷来做到这一点。 你有两个select:

  1. Dockerpipe理的卷:

     docker run -v /src/path nodejsapp docker run -i -t -volumes-from <container id> bash 

您在第二个容器中编辑的文件将更新第一个。

  1. 主机目录卷:

     docker run -v `pwd`/host/src/path:/container/src/path nodejsapp 

您在主机上所做的更改将更新容器。

如果您在OSX下,那么这种卷份额可能会变得非常慢,特别是在基于节点的应用程序(大量文件)下。 对于这个问题, http: //docker-sync.io可以帮助你在不使用卷共享的情况下获得像同步一样的卷共享,这通常会使代码目录的容器读写速度提高50-80倍,取决于你使用的docker-machine。

有关性能,请参阅https://github.com/EugenMayer/docker-sync/wiki/4.-性能和简单示例如何使用它看到样板https://github.com/EugenMayer/docker-sync-boilerplate你的情况统一的例子https://github.com/EugenMayer/docker-sync-boilerplate/tree/master/unison是你需要像NFS同步的NFS