Sha*_*mer 7 java virtualization containers jvm docker
如果有人愿意,现在在 docker 容器中所做的事情在很大程度上也可以在 java 中使用 jvm 来完成,这是真的吗?
除了能够用您自己的语言编写应用程序并具有很大的定制灵活性之外,docker 是否基本上可以做 Java 多年来对其虚拟机所做的事情?即它提供了与底层操作系统分离的可执行环境。
通常Docker容器不能在“Java内”完成,因为Docker用于封装应用程序,而“Java内”是JVM启动后加载的代码。
JVM 在解析将搜索main方法的类时已经在运行。因此无法在进程级别进行封装,因为进程(JVM)已经在运行。
Java 具有封装技术,可以在各种 Java 元素之间提供保护(例如,请参见 Tomcat 中的类加载器层次结构);但是那些只是将“应用程序插件”彼此隔离开来,运行它们的主要进程是 Tomcat,它实际上是一个加载到已经运行的 JVM 中的程序。
这并不意味着您不能将两者结合起来实现某个目标,只是意味着这两种产品之间提供的隔离类型不可互换。