java - 为什么Docker有两种类型的Docker Engine

标签 java docker jvm containers virtual-machine

根据 Docker 理论,通过将“Docker 引擎”置于中间(该层在下图中以蓝色标记),有助于使应用程序层、平台独立。

enter image description here

这看起来与 JVM 概念非常相似。它有助于使 Java 成为独立于平台的语言。

问题 -

  1. 为什么 Docker 有两种类型的引擎(Linux 和 Windows 引擎)?

我的理解-

  1. 这样一来,就违背了“平台无关”的基本理念。

你能帮我澄清我对此的理解吗?

最佳答案

平台独立性是针对包装应用程序的容器,而不是针对引擎本身。

Docker 的整体思想是将应用程序及其依赖项包装起来,以便可以将其部署在任何安装了 Docker 的机器上。

Docker 最初仅适用于 Linux 发行版。然后它被扩展为允许用户在 Windows/MAC 上运行容器。这是通过在 Windows/MAC 上安装 Docker 时在后台部署迷你 Linux VM 来实现的。然后,Docker 引擎将在此 Linux VM 中运行,所有容器也将在那里运行。

原因是容器需要操作系统内核级别的支持,而最初只有 Linux 有此支持。然后大公司开始意识到 Docker 的优势以及社区对 Docker 的巨大兴趣。因此,Windows 决定进行必要的操作系统开发,以便在 Windows 10 上本地运行 Docker 引擎。

简单来说,平台独立性是从应用容器的角度来看的。在 Linux 上运行的 Docker 容器也可以在 Windows 上运行,无需任何更改。这与特定于操作系统的 JVM 非常相似,但是相同的 java 应用程序可以在安装了 JVM 的任何地方运行。

关于java - 为什么Docker有两种类型的Docker Engine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49855834/

相关文章:

windows - HyperV 不适用于家庭版

docker - 如何检索图像的最新标签?

javascript - Java Nashorn 实例方法

java - 如何捕获HeapDumpOnOutOfMemoryError

Java告诉我charAt方法是一个变量?

java - 为什么我的 for 循环没有在 netbeans GUI 上提供输出?

php - Docker上的Symfony4 Uncaught BadRequestHttpException

java - 从 JVM MBean 获取信息

java - 使用 mod 的循环队列大小

java - 线程问题 : NullPointerException