从Docker容器Web应用程序内部触发主机操作系统上的事件

时间:2017-10-10 11:02:21

标签: node.js linux ubuntu docker clam

我安装了ClamAV的主机操作系统(Ubuntu)。我在这个操作系统上运行Docker容器。此容器正在运行面向公众的节点Web应用程序。

此Web应用程序中有文件上载功能,可以上载到docker容器中的文件夹。

此文件夹是"已安装"这样它就可以从主机OS访问。

需要对病毒进行扫描,然后需要使用扫描结果向Docker容器应用报告。然后将处理这些结果并将其转发给用户。

什么是让主机操作系统知道何时将文件上传到此文件夹的最佳方式?

我想到的方法是:

  • 主机操作系统轮询文件夹以检查更改(不可取)。
  • 网络应用触发了一些Docker"事件" (或类似的)告诉主机操作系统扫描特定的子文件夹(因为文件将被上传到特定的子文件夹,并且它不会是平的)。
  • 在网络应用上点击的特定网址,然后在主机操作系统上触发某些内容,因为它会以某种方式收听。

不知道是否有任何或所有这些方法都可以实现。

1 个答案:

答案 0 :(得分:0)

消息/作业队列怎么样?为了简单起见,可以使用Redis的PubSub功能(而不是RabbitMQ等)并创建另一个运行Redis的Docker镜像,Redis的端口暴露给Node图像和主机。然后,Node可以将关于文件上载的消息写入Redis,然后主机上的工作者/监听器可以处理该消息。为了报告回来,可以在相反的方向上使用类似的方法,即主机上的工作者写入(另一个)Redis通道,图像中的工作者消耗它。