可以在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框架打包到一个新的库中。
当前回答
虽然Windows的Docker完全能够运行Linux容器,但相反,尽管理论上是可能的,但由于实际原因无法实现。
最明显的一个是,虽然Docker for Windows可以自由地运行Linux虚拟机,但Docker for Linux需要Windows许可证才能在虚拟机中运行。
而且,Linux是完全可定制的,因此Docker for Windows所使用的Linux虚拟机被精简到只有几MB,只包含运行容器所需的最小值,而可用的最小Windows发行版约为1.5 GB。它可能不是一个不切实际的大小,但它比Windows上的Linux版本要麻烦得多。
虽然有些人当然有可能出售与Windows许可证捆绑在一起的Linux版本Docker,并准备在Linux下运行Windows容器(我不知道这样的产品是否存在),但底线是你无法避免支付Windows供应商锁定价格:无论是金钱还是存储空间。
其他回答
容器使用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)
现在,你可以在Linux上运行SQL Server和。net Core,也可以在Linux容器中运行。
参见:Microsoft SQL Server by Microsoft | Docker Hub
另外:.NET Core by Microsoft | Docker Hub
对你的问题的直接回答当然是,除非有专门为Linux编译的版本,否则没有。
我们可以在Windows上运行Linux容器。Docker for Windows使用基于Hyper-V的Linux- kit或WSL 2作为后端,以方便Linux容器。
如果任何Linux发行版都有这种设置,我们就可以运行Windows容器。Docker for Linux只支持Linux容器。
解决方案1—使用VirtualBox
正如Muhammad Sahputra在这篇文章中所建议的,在Docker容器中运行Windows操作系统是可能的(使用VBoxHeadless -没有图形界面)。
此外,虚拟机网络配置中的NAT设置可以进行端口转发,使您能够传递来自Docker容器的任何流量。从更广泛的角度来看,这最终允许您在Linux机器上运行任何基于windows的服务。
也许这不是Docker容器的典型用例,但它绝对是解决问题的一种有趣的方法。
解决方案2:饮酒
对于简单的应用程序和更复杂的应用程序,您可以尝试在docker容器中使用wine。
这个Docker Hub页面可以帮助你实现你的目标。
我希望Docker能尽快发布一个本地解决方案,就像他们几年前在Windows上做的Docker -machine一样。
虽然Windows的Docker完全能够运行Linux容器,但相反,尽管理论上是可能的,但由于实际原因无法实现。
最明显的一个是,虽然Docker for Windows可以自由地运行Linux虚拟机,但Docker for Linux需要Windows许可证才能在虚拟机中运行。
而且,Linux是完全可定制的,因此Docker for Windows所使用的Linux虚拟机被精简到只有几MB,只包含运行容器所需的最小值,而可用的最小Windows发行版约为1.5 GB。它可能不是一个不切实际的大小,但它比Windows上的Linux版本要麻烦得多。
虽然有些人当然有可能出售与Windows许可证捆绑在一起的Linux版本Docker,并准备在Linux下运行Windows容器(我不知道这样的产品是否存在),但底线是你无法避免支付Windows供应商锁定价格:无论是金钱还是存储空间。