Java 为什么Docker有两种类型的Docker引擎
根据Docker理论,将“Docker引擎”放在应用层和平台之间(下图中该层用蓝色标记),有助于使应用层与平台独立 这似乎非常类似于JVM的概念。它有助于使Java成为独立于平台的语言 问题-Java 为什么Docker有两种类型的Docker引擎,java,docker,jvm,containers,virtual-machine,Java,Docker,Jvm,Containers,Virtual Machine,根据Docker理论,将“Docker引擎”放在应用层和平台之间(下图中该层用蓝色标记),有助于使应用层与平台独立 这似乎非常类似于JVM的概念。它有助于使Java成为独立于平台的语言 问题- 那么,为什么Docker有两种引擎(Linux和Windows引擎) 我的理解- 这种方式违反了“平台独立”的基本概念 你能帮我澄清一下我的理解吗?平台独立性是用于包装应用程序的容器,而不是引擎本身 Docker的整个思想是用它的依赖项包装应用程序,以便它可以部署在安装Docker的任何机器上 Dock
你能帮我澄清一下我的理解吗?平台独立性是用于包装应用程序的容器,而不是引擎本身 Docker的整个思想是用它的依赖项包装应用程序,以便它可以部署在安装Docker的任何机器上 Docker最初只针对Linux发行版启动。然后扩展到允许用户在Windows/MAC上运行容器。这是通过在Windows/MAC上安装Docker时在后台部署一个迷你Linux虚拟机实现的。Docker引擎将在这个Linux虚拟机中运行,所有容器也将在那里运行 原因是容器需要操作系统内核级别的支持,最初只有Linux支持。然后大公司开始意识到社区对Docker的优势和巨大兴趣。因此,Windows决定进行必要的操作系统开发,使Docker引擎在Windows 10上本机运行
简言之,平台独立性是从应用程序容器的角度考虑的。在Linux上运行的Docker容器也可以在Windows上运行,无需任何更改。这与特定于操作系统的JVM非常相似,但是相同的java应用程序可以在安装JVM的任何地方运行。我不是专家,但我认为这两个引擎设计用于在两个不同的操作系统上运行。有点像你不能直接在Windows*上运行为Linux构建的JVM,或者相反。(*我不算WSL:-)你可以在这里找到一些基本信息:。您不应该将Docker视为“独立于平台”,因为它是操作系统级虚拟化。也许您指的是docker的关键概念,它使开发人员可以轻松地将所有依赖项打包到一个映像,并在不同的环境(开发/登台/生产)上运行它,而不会出现诸如“它在我的机器上工作,为什么在你的机器上不工作?”或“它在本地工作,但在生产服务器上不工作”之类的问题.我们不需要更改DockerFile吗?如前所述,DockerFile可能包含Linux内核命令。例如,
运行ls
。