首页 > 解决方案 > 在 Windows 10 上的 Docker 容器内运行 .NET exe

问题描述

我有以下问题。我正在使用 Windows 10 版本 21H1。首先我安装了 Docker 桌面,但是当我运行它(作为 Windows 容器)时,我遇到了 hyper-v 问题。所以最后我按照这里的步骤操作:https ://poweruser.blog/docker-on-windows-10-without-hyper-v-a529897ed1cc

这至少帮助我拥有了一个正在运行的 docker 守护进程。

现在我正在尝试创建一个 Docker 容器,我可以在其中运行 .NET (.exe) 应用程序,但我似乎无法管理它。首先,我试图找到一个与我的本地 Windows 对应的 Docker 映像,基于此: https ://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server -20H2%2Cwindows-10-21H1

然而,拥有

FROM mcr.microsoft.com/windows/nanoserver:win10-21h1-preview

当我运行 Docker 映像/容器时,在我的 Dockerfile 中导致错误:

docker:来自守护进程的错误响应:hcs::CreateComputeSystem bb65c4f05b41cb637f2e6cda7a6201aa5af8f51659b299957be0e45eb3e5dab9:容器操作系统与主机操作系统不匹配。

唯一有效的是:

FROM mcr.microsoft.com/windows/nanoserver:2004

但是对于这张图片,我似乎没有任何工具来运行 .NET 应用程序;我什至没有powershell。

简而言之,在 Windows 10 的 Docker 容器中运行 .NET exe 的方法是什么?

谢谢,

问候,

Sorin

标签: .netwindowsdocker

解决方案


您应该使用适用于 Windows的官方 .NET Docker 映像,因为您特别想要运行 .NET 应用程序。例如,您可以使用以下标记运行 .NET 5 SDK mcr.microsoft.com/dotnet/sdk:5.0:. 还有一些示例 .NET Docker 映像演示了一个预制的 .NET 应用程序:mcr.microsoft.com/dotnet/samples:dotnetapp.

这些都是多架构/多平台标签,这意味着将根据您的主机版本拉取适当版本的 Windows 映像。因此,无需担心为您的 Windows 版本使用特定标签。但是,在必要的情况下,也有特定于 Windows 版本的标签可用(例如5.0-nanoserver-20H2)。


推荐阅读