可以在Linux上运行Windows容器吗?该场景基于一个用。net(旧网络)编写的应用程序,Linux用户想要用Docker运行这个应用程序,需要在本地主机上提供一个net462编写的API。
我使用的是测试版的Windows Docker Desktop。
如果不是,那么为什么Windows可以运行Linux容器,反之亦然?
随着时间的推移,这个问题很受欢迎,我想在这里补充一点,解决方法是使用新的。net标准。它允许我将4.6.2框架打包到一个新的库中。
可以在Linux上运行Windows容器吗?该场景基于一个用。net(旧网络)编写的应用程序,Linux用户想要用Docker运行这个应用程序,需要在本地主机上提供一个net462编写的API。
我使用的是测试版的Windows Docker Desktop。
如果不是,那么为什么Windows可以运行Linux容器,反之亦然?
随着时间的推移,这个问题很受欢迎,我想在这里补充一点,解决方法是使用新的。net标准。它允许我将4.6.2框架打包到一个新的库中。
当前回答
不,您不能直接在Linux上运行Windows容器。
但是你可以在Windows上运行Linux。
Windows Server 2016附带了Ubuntu操作系统的基本映像(在2016年9月beta服务包之后)。这就是你可以在Windows上运行Linux的原因。点击这里查看。最后,Linux容器可以通过Docker的LinuxKit在Windows上运行
您可以通过右键单击托盘菜单中的Docker在Linux和Windows操作系统容器之间进行更改。
其他回答
不,您不能直接在Linux上运行Windows容器。
但是你可以在Windows上运行Linux。
Windows Server 2016附带了Ubuntu操作系统的基本映像(在2016年9月beta服务包之后)。这就是你可以在Windows上运行Linux的原因。点击这里查看。最后,Linux容器可以通过Docker的LinuxKit在Windows上运行
您可以通过右键单击托盘菜单中的Docker在Linux和Windows操作系统容器之间进行更改。
您可以在虚拟机中使用Windows容器(客户操作系统应匹配要求- Windows 10 Pro或Windows Server 2016)。
例如,可以使用VirtualBox。只需在系统内部启用Hyper-V→加速→半虚拟化接口。
在那之后,如果Docker因为一个错误而不能启动,在设置中使用“切换到Windows容器…”
TL; diana:
问:Windows容器可以在Linux上运行吗?
答:不是。他们不能。
容器使用底层操作系统资源和驱动程序,因此Windows容器只能在Windows上运行,而Linux容器只能在Linux上运行。
问:但是Windows的Docker怎么样?或者其他基于虚拟机的解决方案?
答:Docker for Windows允许你模拟在Windows上运行Linux容器,但在底层是创建一个Linux虚拟机,所以Linux容器仍然运行在Linux上,Windows容器运行在Windows上。
奖励:阅读这篇关于在Windows上运行Linux docker容器的非常好的文章。
问:那么,如果我想在容器中运行。net Framework 462应用程序,我该怎么做呢?
A:这要看情况。考虑以下建议:
If it is possible, move to .NET Core. Since .NET Core brings support to most major features of .NET Framework, and .NET Framework 4.8 will be the last version of .NET framework If you cannot migrate to .NET Core - As @Sebastian mentioned - you can convert your libraries to .NET Standard, and have two versions of the application - one on .NET Framework 4.6.2, and one on .NET Core - it is not always obvious. Visual Studio supports it pretty well (with multi-targeting), but some dependencies can require extra care. (Less recommended) In some cases, you can run Windows containers. Windows containers are becoming more and more mature, with better support in platforms like Kubernetes. But to be able to run .NET Framework code, you still need to run on base image of "Server Core", which occupies about 1.4 GB. In same rare cases, you can migrate your code to .NET Core, but still run on Windows Nano server, with an image size of 95 MB.
也让旧的更新成为历史
更新时间:2018年8月8日
如果你正在使用Docker-for-Windows,你现在可以同时运行Windows和Linux容器
好处:与问题没有直接关系,但是现在你不仅可以运行Linux容器本身,还可以运行像Kubernetes这样的协调器:Kubernetes现在在Docker桌面稳定频道中可用
2018年更新:
最初的答案通常是正确的,但几个月前,Docker添加了实验性功能LCOW(官方GitHub存储库)。
以下是这篇文章:
Doesn’t Docker for Windows already run Linux containers? That’s right. Docker for Windows can run Linux or Windows containers, with support for Linux containers via a Hyper-V Moby Linux VM (as of Docker for Windows 17.10 this VM is based on LinuxKit). The setup for running Linux containers with LCOW is a lot simpler than the previous architecture where a Hyper-V Linux VM runs a Linux Docker daemon, along with all your containers. With LCOW, the Docker daemon runs as a Windows process (same as when running Docker Windows containers), and every time you start a Linux container Docker launches a minimal Hyper-V hypervisor running a VM with a Linux kernel, runc and the container processes running on top. Because there’s only one Docker daemon, and because that daemon now runs on Windows, it will soon be possible to run Windows and Linux Docker containers side-by-side, in the same networking namespace. This will unlock a lot of exciting development and production scenarios for Docker users on Windows.
原:
正如@PanagiotisKanavos在评论中提到的,容器不是用于虚拟化的,它们使用主机的资源。因此,目前Windows容器不能在Linux机器上“按原样”运行。
但是你可以使用VM,因为它在Windows上工作。您可以在Linux主机上安装Windows虚拟机,这将允许运行Windows容器。
有了它,依我看,在生产环境中以这种方式运行它将不是最好的主意。
此外,这个答案提供了更多细节。
与虚拟化不同,容器化使用相同的主机操作系统。因此,在Linux上构建的容器不能在Windows上运行,反之亦然。
在Windows中,您必须借助虚拟化(使用Hyper-V)来拥有与容器的操作系统相同的操作系统,然后您应该能够运行相同的操作系统。
Docker for Windows是一个类似的应用程序,它构建在Hyper-V上,有助于在Windows上运行Linux Docker容器。 但据我所知,没有任何东西可以帮助在Linux上运行Windows容器。
什么?为什么?我刚刚在我的“Debian like”主机的VMM上安装了Windows 10 PRO…VMM是一个非常古老的虚拟机管理器…是的,有了它,主机工作得很慢,但虚拟机内部的一切都很好。这是在开发中使用Windows特性的一个很好的选择