Docker/CoreOS上的Java JVM

Ame*_*ite 5 java jvm docker coreos

我正在学习CoreOS/Docker,并试图围绕一些事情.

使用Java基础结构,是否可以在其自己的容器中使用JVM,并让其他Java应用程序/服务使用此JVM容器?如果没有,我假设JVM必须捆绑在每个容器中,所以基本上你必须拉Java dockerfile并合并我的Java服务; 本质上创建一个在CoreOS机器上运行的Linux Machine + Java + Service容器.

我唯一的另一个想法是可能在CoreOS上运行JVM,但似乎这是不可能的.

err*_*per 4

实际上可以在 中解压 Orcale Java /opt,但这只是最后的手段。JRE 和 JDK 的 Oracle 二进制文件不需要任何系统库,因此在任何地方都很容易。

我编写了一些非常小的JREJDK镜像,用它们我能够运行Elasticsearch和其他主要的开源应用程序。我还编写了一些容器,允许我在 CoreOS 上编译 jar(errordeveloper/mvnerrordeveloper/sbterrordeveloper/lein)。

正如 @ISanych 指出的,运行多个 Java 容器不会影响磁盘使用,它几乎相当于在主机上运行多个 JVM。如果您发现运行多个 JVM 不太适合您,那么答案实际上是,如果容器在它之前就已存在,那么 JVM 就不必那么复杂。然而,容器中的 Java 仍然相当不错,因为您可以拥有一个永久固定的类路径,并且不会陷入依赖地狱。也许不是构建 uberjar(这是我主要做的事情,尽管众所周知它们并不完全完美,但我很懒),而是可以将 jar 捆绑在 tarball 中,然后ADD jars.tar /app/lib/在他们的Dockerfile中使用。