代码之家  ›  专栏  ›  技术社区  ›  atm

同一主机上两个Docker容器之间的慢速resilio同步

  •  9
  • atm  · 技术社区  · 7 年前

    我正在测试resilio(以前叫bittorrent)同步,使用两个 docker containers 在同一个主机上,我注意到通过绑定挂载添加文件时,同步文件的速度非常慢。

    第一个树脂容器:

    docker run  -d --name resilio1 -p 81:8888 -p 55555:55555 -v /c/Users/Test/resilio/resilio1/config:/mnt/sync -v /c/Users/Test/resilio/resilio1/data:/mnt/mounted_folders/data --restart on-failure resilio/sync
    

    第二个resilio容器(我更新了配置以监听端口55556以避免与resilio1发生冲突):

    docker run  -d --name resilio2 -p 82:8888 -p 55556:55556 -v /c/Users/Test/resilio/resilio2/config:/mnt/sync -v /c/Users/Test/resilio/resilio2/data:/mnt/mounted_folders/data --restart on-failure resilio/sync
    

    当小文件被添加到绑定到容器中的主机目录中时,甚至需要10分钟的时间来进行同步。

    相反,如果我 码头工人 在容器和创建文件或文件夹中,同步立即进行。

    我这里有什么东西不见了吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Artsiom Praneuski    7 年前

    resilio sync使用两种机制跟踪文件系统中的更改:

    • 文件系统通知resilio sync subscribes to(立即获取有关文件系统更改的信息)。例如,这些通知只是一个操作系统内核机制。 Inotify API 在Linux上使用。
    • 定期重新扫描同步添加的所有文件夹(默认每10分钟进行一次,可以在 settings )

    正如你可能知道的,Docker在Windows上使用 Linux VM 并依赖于Linux内核中的SMB/CIFS支持。正如Jochem Kuijpers提到的,这个问题与一个文件系统通知有关,在Windows和装载卷的情况下,它不能正常工作,这是一个 known issue .

    解决方法是使用一些第三方工具跟踪安装的Windows卷中的更改并通知Docker容器。

    你可以使用 docker-windows-volume-watcher 例如。安装非常简单(需要在Windows上安装脚本):

    pip install docker-windows-volume-watcher
    

    使用也很简单:

    docker-volume-watcher <container_name> C:\path\to\mounted\directory
    

    正如文章所说:

    脚本将检查所有正在运行的容器并开始通知 有关已装入目录中更改的容器。脚本也将 侦听容器启动/停止事件并更新被监视的列表 目录。

    推荐文章