docker - 在 Docker 容器之间流式传输数据的最有效方式是什么

标签 docker video memory buffer shared

我每秒有大量字节来自传感器设备(例如视频),正在被 Docker 容器中的进程读取和处理。

我有第二个 Docker 容器,它想读取已处理的字节流(每秒仍然有大量字节)。

读取此流的有效方法是什么?理想情况下,我希望第一个容器写入某种共享内存缓冲区,第二个容器可以从中读取,但我不认为单独的 Docker 容器可以共享内存。也许有一些使用共享文件指针的解决方案,将文件保存到内存文件系统中?

我的目标是最大限度地提高性能并尽可能减少从一个缓冲区到另一个缓冲区的无用数据副本。

编辑:希望有适用于 Linux 和 Windows 的解决方案。同样,我有兴趣在 C++ 和 python 中找到解决方案。

最佳答案

mkfifo /tmp/myfifo 创建一个先进先出.与两个容器共享:--volume /tmp/myfifo:/tmp/myfifo:rw

可以直接使用:

  • 从容器 1:echo foo >>/tmp/myfifo

  • 在容器 2 中:read var </tmp/myfifo

缺点:容器 1 被阻塞,直到容器 2 读取数据并清空缓冲区。

避免阻塞:在两个容器中,在 bash exec 3<>/tmp/myfifo 中运行.

  • 从容器 1:echo foo >&3

  • 在容器 2 中:read var <&3 (或例如 cat <&3 )

此解决方案使用 exec来自 bash 的文件描述符处理.我不知道怎么做,但其他语言当然也可以。

关于docker - 在 Docker 容器之间流式传输数据的最有效方式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51294841/

相关文章:

java - 使用kubernetes将tomcat conf文件发送到容器

linux - 阻止 Linux 将文件添加到内存缓存中?

java - TestContainers 框架无法访问 docker 守护进程

linux - 管理每个容器的 IP 地址

regex - 适当的youtube url正则表达式以验证url输入

javascript - 在视频缓冲之前,事件不会起作用

linux - Openfire Java 内存

C: 使用带++/-- 的指针更新内存地址内容

linux - 将目录挂载到 Docker 中的命名卷

ios - 使用 UIActivityViewController 共享视频时,邮件未附加视频