【问题标题】:Linux Container vs JVMLinux 容器与 JVM
【发布时间】:2015-10-08 23:49:20
【问题描述】:

在 docker 之上运行的容器和在 JVM 之上运行的自包含 Java 程序之间的最大区别是什么?

我假设两者都直接在物理 linux 服务器上运行,没有底层可视化。

【问题讨论】:

    标签: docker linux-containers


    【解决方案1】:

    在 JVM 之上运行的 java 程序将是一个 Linux 进程。 JVM 在进程内部运行,并解释(或编译)类中的 Java 字节码。

    docker 容器更重量级。有 docker 守护进程,docker 容器,它实际上是一个虚拟化的 Linux 实例,然后你的 JVM 在其下运行。

    我发现 https://docs.docker.com/engine/getstarted/step_one/https://docs.docker.com/engine/userguide/eng-image/baseimages/ 很有帮助。

    【讨论】:

    • Docker 容器只是一个对照组,不是吗?
    • Docker 是控制组 AFAIK
    【解决方案2】:

    它们有很大的不同。 java程序是操作系统内核上的一个进程。 JVM 正在运行,它执行作为 java 程序的字节码。 Java 程序可以使用任意数量的资源(取决于 JVM 限制),并以它喜欢的任何方式使用操作系统。

    docker 容器是操作系统虚拟化的一种实现。理解容器的最简单方法是使用虚拟化提供操作系统的独立部分。容器的资源使用可以被限制并且可以被隔离,因此它不知道容器之外的系统的任何部分,比如文件系统、网络、进程。内核提供了特定的功能——用于提供容器的 CGroups 和 Namespaces。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多