首页 > 解决方案 > 通过 docker 运行 java 服务器有意义吗?

问题描述

我即将创建一个 java 服务器/客户端结构,它通过 tcp 套接字使用双向通信。对于每个请求的客户端,都会创建一个新线程。目前它正在托管服务的虚拟机上运行。现在我考虑使用docker。但是在这种情况下切换到 docker 真的有意义吗?docker 真的要像 java 服务器一样运行永久应用程序吗?

标签: javadockerservercontainersscalability

解决方案


我在这里如履薄冰,但无论如何我都要说...如果您在 Linux 上运行一个进程,就大多数意图和目的而言,该进程正在一个容器中运行。

容器是内在 Linux 内核特性(命名空间、cgroup 等)之上的“糖”。包括 Docker Engine 在内的解决方案大多使内核的这些——有点神秘——功能更广泛地可用| 更容易使用。

容器和虚拟机是非常不同的技术。扩展上述内容,您可以在容器中运行虚拟机,并且——几乎总是——在虚拟机中运行容器。

它一直是容器:-)

直接回答您的问题:您已经在容器中运行 Java 服务器,并且它正在 VM 上运行。您可能会决定做两件事,但请在决定之前详细阅读每件事:

  • 将 Docker(引擎)添加到现有 VM(如果还没有的话)中,作为一种更轻松地将 Java 服务器作为 Docker 容器进行管理的方式。好处:不清楚,但见下文。

  • 从 VM 中提取 Java 服务器 (!) 并将服务器作为 Docker 容器运行。好处:不清楚;后果:您的托管公司可能无法实现;潜在的安全问题;没有明确的利益;等等

使用容器并将容器部署到现有托管服务提供商(并继续使用他们的虚拟机)的一个好处是,您将能够在托管服务提供商以外的位置构建和测试,并且(大部分)保证容器映像在构建和测试期间工作的内容也将在生产中的托管服务提供商上工作。


推荐阅读