可以在Linux上运行Windows容器吗?该场景基于一个用。net(旧网络)编写的应用程序,Linux用户想要用Docker运行这个应用程序,需要在本地主机上提供一个net462编写的API。

我使用的是测试版的Windows Docker Desktop。

如果不是,那么为什么Windows可以运行Linux容器,反之亦然?


随着时间的推移,这个问题很受欢迎,我想在这里补充一点,解决方法是使用新的。net标准。它允许我将4.6.2框架打包到一个新的库中。


当前回答

与虚拟化不同,容器化使用相同的主机操作系统。因此,在Linux上构建的容器不能在Windows上运行,反之亦然。

在Windows中,您必须借助虚拟化(使用Hyper-V)来拥有与容器的操作系统相同的操作系统,然后您应该能够运行相同的操作系统。

Docker for Windows是一个类似的应用程序,它构建在Hyper-V上,有助于在Windows上运行Linux Docker容器。 但据我所知,没有任何东西可以帮助在Linux上运行Windows容器。

其他回答

我们可以在Windows上运行Linux容器。Docker for Windows使用基于Hyper-V的Linux- kit或WSL 2作为后端,以方便Linux容器。

如果任何Linux发行版都有这种设置,我们就可以运行Windows容器。Docker for Linux只支持Linux容器。

容器使用OS内核。Windows容器利用进程来运行。所以从理论上讲,Windows容器不能在Linux上运行。

但是,有一些使用VMstyle解决方案的变通办法。

我已经找到了这个解决方案,在Mac上使用Vagrant和Packer,所以它应该也适用于Linux: https://github.com/StefanScherer/windows-docker-machine

这个Vagrant环境创建一个Docker机器工作在您的 带有Windows容器的MacBook。您可以轻松地在Docker之间切换 Mac Linux容器和Windows容器。

建造无头流浪者盒子 $ git克隆https://github.com/StefanScherer/packer-windows $ CD packers -windows $ packer build——only=vmware-iso windows_2019_docker.json $ vagrant box添加windows_2019_docker 创建Docker机器 $ git克隆https://github.com/StefanScherer/windows-docker-machine $ CD windows-docker-machine $ vagrant up——provider vmware_fusion 2019 切换到Windows容器 (docker-machine env 2019)

什么?为什么?我刚刚在我的“Debian like”主机的VMM上安装了Windows 10 PRO…VMM是一个非常古老的虚拟机管理器…是的,有了它,主机工作得很慢,但虚拟机内部的一切都很好。这是在开发中使用Windows特性的一个很好的选择

与虚拟化不同,容器化使用相同的主机操作系统。因此,在Linux上构建的容器不能在Windows上运行,反之亦然。

在Windows中,您必须借助虚拟化(使用Hyper-V)来拥有与容器的操作系统相同的操作系统,然后您应该能够运行相同的操作系统。

Docker for Windows是一个类似的应用程序,它构建在Hyper-V上,有助于在Windows上运行Linux Docker容器。 但据我所知,没有任何东西可以帮助在Linux上运行Windows容器。

您可以在虚拟机中使用Windows容器(客户操作系统应匹配要求- Windows 10 Pro或Windows Server 2016)。

例如,可以使用VirtualBox。只需在系统内部启用Hyper-V→加速→半虚拟化接口。

在那之后,如果Docker因为一个错误而不能启动,在设置中使用“切换到Windows容器…”