我知道这个问题(Can Windows Containers be hosted on linux?),但它并没有真正回答我的问题。
我是Docker的新手,但我的问题是这样的 - 如果我使用任何Windows应用程序,将它放在Docker容器中,它现在可以在Linux上运行,反之亦然吗?
Confluent声称它只能在linux上运行,但我的同事使用Docker在Windows上安装它。那么如果你可以用Docker安装它,那么整个应用程序肯定会被视为跨平台?
我想我在这里错过了一些重点。
答案 0 :(得分:6)
Docker不是VM,它是在共享内核上运行应用程序的一种方法,可以将这些应用程序相互隔离。 Windows二进制文件不能在Linux内核上运行,反之亦然(暂时忽略Windows的Linux运行时)。因此,如果您使用Windows应用程序构建容器,则只有在Dockers Windows运行时和Windows基础映像上执行此操作时才会运行。它不会在Linux主机上运行。
docker提供的是运行Linux的嵌入式VM(最初是VirtualBox,但当前版本是HyperV)。通过运行Docker for Windows,默认情况下,使用此VM并且您只运行Linux容器,因此您的Windows应用程序甚至不会在容器内运行。要运行Windows二进制文件,您需要切换Docker for Windows以使用Windows运行时,并且目前这是一个切换,您无法在同一主机上同时运行Linux和Windows运行时。
Docker的Linux安装也没有打包Windows VM。您需要在Linux主机上的VM内安装自己的Windows副本(并获得Docker未提供此许可的许可),并在需要Windows支持的情况下在该VM内运行容器。