在RESTful API中使用Docker容器来执行不可信代码的安全性和性能限制是什么?

我正在开发一套用于提供一些数据分析的RESTful API。 在调用API时,客户端也将能够传递脚本函数作为附加参数(并且这些函数将在分析pipe道期间执行)。 数据本身将从各种来源(如Amazon S3,客户端的Dropbox或Google云存储)中检索。

我希望能够在一个非常受控和隔离的环境中执行客户端脚本。

因此,我想为每个客户端请求实例化一个Docker容器,并在该受控环境中执行处理pipe道以及客户端脚本。

所以基本上,RESTful端点会dynamic实例化Docker容器以处理客户端请求。 完成后,处理结果将被推回到Dropbox / S3 / Google云端存储,此时对应的docker容器也将被移除或重新分配给另一个请求。

编辑1

  • 从RESTful API的angular度来看,客户端请求将被接受(HTTP 202)并被推送到一个处理队列中。
  • 处理队列中的每个请求都将在未来的某个时刻依次分配给docker集装箱。 客户端将能够使用另一个RESTful端点查询处理的状态。

编辑2 :这是一个链接解释类似的方法: https : //medium.com/aws-activate-startup-blog/sandboxing-code-in-the-era-of-containers-294edb3a674#.19882q2g5

我的问题:

  • 这种方法对性能的影响是什么? 换句话说,系统地创build用于处理的docker容器而不是使用工作进程的性能成本是多less。

  • 这种方法是否真的增加了额外的安全性?