在docker之上运行的容器和在JVM之上运行的自包含Java程序之间的最大区别是什么?
我认为两者都直接在没有底层可视化的物理Linux服务器上运行。
答案 0 :(得分:4)
在JVM之上运行的java程序将是一个Linux进程。 JVM在进程内部运行,并解释(或编译)类中的Java字节代码。
码头工人容器更重量级。还有docker守护进程,docker容器,它实际上是一个虚拟化的Linux实例,然后你的JVM就在那里运行。
我发现https://docs.docker.com/engine/getstarted/step_one/和https://docs.docker.com/engine/userguide/eng-image/baseimages/很有帮助。
答案 1 :(得分:3)
他们是显着不同的。 java程序是OS内核上的一个进程。 JVM正在运行,它执行java程序的字节码。 java程序可以使用任意数量的资源(取决于JVM限制),并以任何方式使用操作系统。
docker容器是Operating System Virtualization的一个实现。理解容器的最简单方法是使用虚拟化提供操作系统的独立切片。容器的资源使用可以是有限的,可以隔离,以便它不知道容器外部系统的任何部分,如文件系统,网络,进程。内核提供了特定的功能 - 用于提供容器的CGroup和命名空间。