我可以在Docker上使用Windows .Net应用程序吗?

关于Docker的所有讨论,以及它如何适应虚拟化世界,我都有点困惑。 所以这里有一个直接的问题:我能打包一个.Net应用程序(通常运行在Windows 7等)在Docker容器中运行,然后在任何支持Docker的主机上执行它?

TIA。

今天不行。 未来,微软和Docker已经宣布你将会有一个Windows版本的Docker。

编辑: 更新的信息

请注意,基本平台和操作系统必须匹配 – 即,今天,您可以在ARM Linux上运行ARM Linux容器,在x64 Linux上运行x64 Linux容器,但不能混用。 当添加Windows时,模式将是相同的 – 您将能够在Windows操作系统上运行Windows容器,但不能在Linux上运行。 不是没有额外的虚拟化层(如VirtualBox,VMWare等)。

编辑:尊重葡萄酒的答案,我没有考虑。 它适合作为“一个额外的虚拟化层”,但在OS API级而不是硬件级。 支持.Net程序的范围有所限制。

同样的,你也许可以在Mono中运行Docker中的.Net代码。

Dockerbuild立在Linux上。 在Docker中运行.Net应用程序的唯一方法是使用Mono for Linux。

是的,如果你安装wine和.NET,这里就是一个Dockerfile的例子

https://registry.hub.docker.com/u/justmoon/wix/dockerfile/

提取

# Install .NET Framework 4.0 

RUN wine wineboot && xvfb-run winetricks – unattended dotnet40 corefonts

这可能是非常过时的问题,但我认为需要更新。 是的,您可以使用.net / .net核心的docker,并将在Visual Studio 2017中完全支持。

https://channel9.msdn.com/Events/Connect/2016/172

没有必要使用葡萄酒或单声道。

有点晚了,但如果它帮助任何人。 是的,我们可以在Docker上运行.Net应用程序,因为docker现在在Windows上支持。 但首先你必须检查你的Windows版本,你的Windows版本必须是14393.233或更高。 下载Docker 1.13.0或更高版本,然后您可以轻松运行.Net应用程序。 这个存储库通过运行一个示例.Net应用程序。

下面是示例dockerfile运行.net 4.5应用程序

 FROM microsoft/iis RUN ["powershell.exe", "Install-WindowsFeature NET-Framework-45-ASPNET"] RUN ["powershell.exe", "Install-WindowsFeature Web-Asp-Net45"] ADD publisedDir/ c:\\website EXPOSE 8081 RUN powershell New-Website -Name 'websiteName' -Port 8081 -PhysicalPath 'c:\website' -ApplicationPool '.NET v4.5' ENTRYPOINT powershell