Linux Container vs JVM



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

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

运行在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/很有用。

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

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

最新更新