atm*_*atm 9 docker bittorrent-sync
我正在使用同一主机上的两个docker容器测试Resilio(以前的BitTorrent)Sync ,我注意到同步文件在通过bind mounts添加时非常慢.
First Resilio容器:
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
Run Code Online (Sandbox Code Playgroud)
第二个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
Run Code Online (Sandbox Code Playgroud)
即使小文件被添加到绑定装入容器的主机目录中也需要大约10分钟才能同步.
相反,如果我将docker exec放入容器并创建文件或文件夹,则会立即进行同步.
这里有什么我想念的吗?
Resilio Sync 使用两种机制来跟踪文件系统中的更改:
您可能知道 Windows 上的 Docker 使用Linux VM运行,并依赖于 Linux 内核中的 SMB/CIFS 支持。正如 Jochem Kuijpers 提到的,该问题与文件系统通知有关,该通知在 Windows 和已安装卷的情况下无法正常工作,这是一个已知问题。
解决方法是使用一些第三方工具来跟踪已安装的 Windows 卷中的更改并通知 Docker 容器。
例如,您可以使用docker-windows-volume-watcher 。安装非常简单(脚本需要安装在Windows上):
pip install docker-windows-volume-watcher
Run Code Online (Sandbox Code Playgroud)
使用方法也很简单:
docker-volume-watcher <container_name> C:\path\to\mounted\directory
Run Code Online (Sandbox Code Playgroud)
正如文章所说:
该脚本将检查所有正在运行的容器,并开始通知容器有关已安装目录的更改。该脚本还将侦听容器启动/停止事件并更新监视目录的列表。
| 归档时间: |
|
| 查看次数: |
374 次 |
| 最近记录: |