Docker as";功能“;(根据请求创建一个Docker)

Docker as";功能“;(根据请求创建一个Docker),docker,nginx,docker-swarm,Docker,Nginx,Docker Swarm,是否有一种简单的方法为每个请求创建docker容器的距离 我有一个Docker容器,计算数学算法需要很长时间。运行时,不能并行处理其他请求。Lambda函数将是最好的解决方案,但是容器需要下载超过1gb的数据,并且需要至少10个内核和5GB ram才能执行,因此Lambda将过于昂贵 我们有一个大的集群(1000核,0.5TB RAM),我正在考虑使用NGINX负载均衡器或Kubernetes裸机。 是否可以按照每个请求创建一个实例的方式进行配置(类似于Lambda函数)?有一些工具(如Airf

是否有一种简单的方法为每个请求创建docker容器的距离

我有一个Docker容器,计算数学算法需要很长时间。运行时,不能并行处理其他请求。Lambda函数将是最好的解决方案,但是容器需要下载超过1gb的数据,并且需要至少10个内核和5GB ram才能执行,因此Lambda将过于昂贵

我们有一个大的集群(1000核,0.5TB RAM),我正在考虑使用NGINX负载均衡器或Kubernetes裸机。
是否可以按照每个请求创建一个实例的方式进行配置(类似于Lambda函数)?

有一些工具(如Airflow或Argo)专为这些功能而设计


基本上,您可以创建一个DAG,它的运行非常类似于一个函数作为一个服务,但是在您想要的定制docker容器上运行。

您可能需要将HTTP服务与后端处理分离。如果作业需要几分钟或更长的时间才能运行,大多数浏览器和其他HTTP客户端在完成之前都会超时,因此它的HTTP端需要以某种方式启动作业,并立即返回某种成功消息

完成此操作后,您可能会发现像RabbitMQ这样的作业队列是一种有用的基础结构技术。同样,这将使作业队列与实际运行它们的机制分离。在Docker/Kubernetes空间中,您将启动一些持久的工作人员,他们都在倾听队列并按照队列出现的样子工作。你不必为每项工作安排一名员工;或者可能只有一名工人启动了其他Docker容器或Kubernetes作业;但是如果积压的工作太长,你可以增加额外的工人


在纯Docker空间中,理论上可以使用Docker API来启动其他容器。但是,这样做会使您的进程不受限制地在根级别访问主机;如果您是在HTTP服务器的上下文中运行此操作,则需要非常小心安全考虑事项。Kubernetes也有一个API,从安全角度来看,这可能更好:您可以设置一个服务帐户,该帐户只具有启动作业的权限,并为每个到达的入站作业启动一个作业。(安全性仍然很重要,但恶意输入更难进入主机的根目录。)

我的docker容器公开了一个公共API。我是否仍然可以使用单个容器使用DAG,或者我是否需要创建一种API网关,然后使用DAG为每个请求创建一个容器?如果通过kubernetes运行此操作,则可以旋转吊舱,而不仅仅是单个容器,因此可以将apl作为一个侧车运行