Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nfs Docker:如何将主机文件夹与容器文件夹实时同步?_Nfs_Docker_Lxc - Fatal编程技术网

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

Nfs Docker:如何将主机文件夹与容器文件夹实时同步?,nfs,docker,lxc,Nfs,Docker,Lxc,我在一个由Node提供动力的网站上工作。因此,我制作了一个简单的Dockerfile,将我的站点文件添加到容器的FS中,在运行容器时安装节点并运行应用程序,公开私有端口80 但是,如果我想更改该应用程序的文件,我必须重建容器映像并重新运行它。这需要几秒钟 有没有一种简单的方法可以让我的主机系统的应用程序文件与正在运行的容器中的应用程序文件保持同步 这样,我只需重新启动它就可以应用更改,甚至更好,如果我使用类似于supervisor,它将自动执行。您可以使用卷来执行此操作。您有两个选择: Dock

我在一个由Node提供动力的网站上工作。因此,我制作了一个简单的Dockerfile,将我的站点文件添加到容器的FS中,在运行容器时安装节点并运行应用程序,公开私有端口80

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

有没有一种简单的方法可以让我的主机系统的应用程序文件与正在运行的容器中的应用程序文件保持同步


这样,我只需重新启动它就可以应用更改,甚至更好,如果我使用类似于
supervisor
,它将自动执行。

您可以使用卷来执行此操作。您有两个选择:

  • Docker管理的卷:

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

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

    如果您使用OSX,这些卷共享可能会变得非常缓慢,尤其是使用基于节点的应用程序(大量文件)。对于此问题,可以提供卷共享(如同步),而不使用卷共享,这通常会将代码目录的容器读/写速度提高50-80倍,具体取决于您使用的docker机器

    有关性能,请参阅,有关如何使用它的简单示例,请参阅适用于您的案例的样板文件unison示例是类似NFS的同步所需的示例

    docker run -dit -v ~/my/local/path:/container/path/ myimageId
    
    对于
    /container/path/
    ,您可以使用例如
    /usr/src/app
    。 旗帜:

    -d=分离模式

    -它=互动

    -v+path=指定卷

    (如果您只关心卷,可以删除-dit标志。)


    它不适用于windows,对吗?您知道另一种方法吗?它不适用于Windows上的Docker Toolbox。但是,它确实适用于Docker for Windows,它需要Windows 10(但不是Home Edition)。适用于osx/Windows/linux和freebsd(0.5.0)-但是的,一些策略,如native_osx,仅适用于osx
    osx
    ,还有一些Docker引擎可能与注意的路径重复,您编写的
    `pwd`/host/src/path
    需要是绝对路径(例如,
    /host/src/path
    )。如果使用相对路径,它将无法在主机和容器之间正确同步。pwd是否总是返回绝对路径?我应该写入“/host/”和“/container/”还是这些系统上的文件路径?还是容器名称?那么主人叫什么?我只想将文件从我的mac同步到docker,我应该执行1或2,还是同时执行2?我得到
    docker:无效的引用格式:存储库名称必须是小写。
    使用-ditv如果我不使用-dit标志,则容器在命令-d=detached mode,-it=interactive,-v指定卷后终止。如果您只关心卷,可以删除-dit标志。否决票是因为缺少解释吗?如果是,我已经编辑了这个问题。正如我所测试的,指令本身是有效的。
    docker run -dit -v ~/my/local/path:/container/path/ myimageId