我之前问过这个问题,我将对其进行改进,以便得到更好的答案。我计划制作一个 java webapp,我想向其中添加一个功能,这就是我需要帮助的功能。
我想在浏览器中嵌入一个运行操作系统的虚拟机,甚至只是一个 Linux bash 终端。我在一些网站上看到过它,例如immersivelabs.com,用户在其中编写命令或执行任务看起来像什么一个在浏览器中运行的操作系统,然后你会因正确完成任务而获得积分。
在我之前的问题中,我被告知要查看 Apache Guacamole、noVNC 和 Shellinabox。我想知道如何使用网络应用程序进行设置。我应该关闭单独的容器/虚拟机并打开它们的网关吗?我每个用户至少需要 1 个。有没有任何服务可以让我托管多个这样的容器?可以在 Web 服务器或 tomcat 上运行的东西甚至可能是一些我可以在本地运行以在我自己的系统上尝试的 API
我将不胜感激任何建议或指导
答案1
你提到的 Immersive Labs 网站介绍了他们的情况支持页面它们 100% 基于云。然后,我们可以合理地假设他们在云中有一个后端系统,并且该应用程序不是自包含在浏览器中。
因此,要复制此架构,您将运行一个远程系统并使用 Web 界面连接到它。远程系统可以是虚拟机或容器。虚拟机在资源方面会“更重”,但会在实例之间提供更好的隔离。容器则相反——占用资源少,但在某些方面是共享的。您将希望每个用户使用一个实例,以便他们的活动彼此隔离。
如果您决定使用容器,那么您可以直接使用 Docker 来管理它们。它甚至还有一个REST API以便您可以轻松集成。
对于前端,您应该查看已经提到的选项(鳄梨酱、NoVNC 等)。由于您计划使用 Java,Apache Guacamole 可能非常适合您。你可以看到它的架构这里。