【发布时间】:2019-12-03 13:11:41
【问题描述】:
是否有任何方法可以做到这一点:
- 使用主应用程序 - 服务器(flask 应用程序)运行一项服务(容器);
- 服务器允许运行其他服务,它们也是烧瓶应用程序;
- 但我想在单独的容器中运行每个新服务?
例如,我在服务器上有端点/services/{id}/run,每个id 都是一些服务ID。所有服务的 Docker 镜像都是相同的,每个服务都运行在不同的端口上。
我想要这样的东西:
对服务器的请求 - <host>//services/<id>/run -> 服务器上的应用程序发出一些神奇的命令/向某处发送消息 -> 具有 id 的服务在新容器中启动。
我知道至少在本地我可以使用 docker-in-docker 或简单地将 docker 套接字安装在容器中并在此容器内使用 docker。但我想找到跨多台机器工作的方法(每个服务都可以在另一台机器上运行)。
对于 Kubernetes:我知道如何创建和运行 pod 和部署,但我找不到如何根据另一个容器的命令运行新容器。我可以以某种方式从容器与 k8s 通信以运行新容器吗?
一般:
我可以从另一个不使用 docker-in-docker 和安装 docker 套接字的容器运行新容器;
我可以使用/不使用 Kubernetes 吗?
感谢您的提前。
【问题讨论】:
-
这不是最佳做法。在 Kubernetes 中,它比在普通 Docker 中的风险要小一些(查看如何调用 Kubernetes API),但它管理起来很复杂,并且很容易让您面临拒绝服务攻击。更好的是使用像 RabbitMQ 这样的作业队列和可以由 Deployment 对象管理的 worker。
-
我知道这不是最佳做法。所以我想知道是什么。如何从另一个容器启动新 docker 容器的运行?我的问题不仅是关于 Kubernetes,而且我可以使用任何工具来解决这个问题。
-
正如之前的社区成员所说。这不是最佳做法。我建议查看以下链接: 1.[StackOverflow control docker from container](stackoverflow.com/questions/39468841/… 2.Exposing dockerd api 3.Docker engine security。您需要以这种方式启动容器有什么特别的原因吗?
-
@DawidKruk 谢谢你的链接。具体示例:机器学习部署。服务:前端,后端。 Frontend = UI,我可以从列表中选择模型并单击“部署”按钮(调用某个后端端点)。然后后端在单独的容器中运行新的模型服务器。
-
@AlexKolosov 这些部署会计算出您将创建的东西吗?最重要的是,您是否打算授予其他人运行它的权限?
标签: docker kubernetes