当前,我们使用基于Windows的服务器托管2个VM。一个虚拟机将Windows与Windows应用程序一起使用,另一虚拟机将Linux与Linux应用程序一起使用。

是否可能出现以下情况?

带有Windows 2016的裸服务器(无VM)。安装Docker引擎安装Windows应用程序容器。安装Linux应用程序容器。

Docker引擎是否将操作系统抽象化,以便此配置将同时运行两个应用程序?意味着Docker引擎就像Java程序如何在各种OS上运行一样充当“解释器”?

评论

详细信息在这里,主要是您需要一个Linux VM来运行linux容器,只是为了提供一个linux内核。docker容器是独立的进程,因此它们需要一个主机,linuxkit就是这样,但是集成在docker run命令中以简化操作使用。

这不是答案吗?

@Dan目前在厨师峰会上,我写一个正确的答案还很短:),所以我只发表了一条评论

不确定Windows应用程序在做什么,但是您也可以考虑切换到点网核心,因为它是跨平台的。这样一来,您就可以在Linux上运行所有内容。

#1 楼


Docker引擎是否将操作系统抽象化,以便此配置将同时运行两个应用?


不,不是。 Docker使用容器化作为核心技术,它依赖于在容器之间共享内核的概念。如果一个Docker映像依赖于Windows内核,而另一个依赖于Linux内核,则无法在同一OS上运行这两个映像。

在Windows上安装Linux Docker时,实际上是在设置Hyper-V中的Linux VM,LinuxKit详细信息在这里。您可以打开Hyper-V控制台,然后看到一个名为“ MobyLinuxVM”的VM。要完成这项工作,您需要做很多工作,例如docker二进制文件可以连接到Linux VM并运行与您以前使用的命令相同的主机,主机和VM之间的网络可以实现无缝连接,批量安装等。最终,不是Docker允许您在Windows上运行Linux Docker映像,那只是老式的虚拟化。

#2 楼

是的,只要主机支持虚拟化并且可以运行docker二进制文件,您就可以在容器中运行任何内容!

评论


我仍然认为运行Windows / Linux容器有一些细节,还是?

– Peter Muryshkin
17-10-11在13:42

我认为您也需要LinuxKit,但最终会获得与Linux相同的功能

– Briansbum
17-10-11在14:00