.net - 在 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
解决方案
您应该使用适用于 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
)。
推荐阅读
- angular - ASP.NET Core Web 应用程序:升级到 Angular 9 - 错误 es2015 为 esm2015
- c# - 如何将简单字符串对象绑定到 Xamarin Forms 中的标签文本?
- python - 运行 setx OPENCV_VIDEOIO_PRIORITY_MSMF 0 后,vscode 终端在多线程错误后冻结
- mysql - 为什么 CakePHP 4 CLI 不能通过 PDO 连接到 MySQL 数据库?
- python - 无法在 Python 上安装 beautifulsoup 和 requests
- c# - 在中间件中接收来自 StatusCode 的消息
- java - 我可以获得可变数量的 Java 类的泛型类型,甚至是一般类型吗?
- c++ - 选择排序 - 数组与向量
- node.js - 基于性能、稳定性和 ES8+ 支持的 Knex 与 mysql2
- java - 为什么 Spring Boot 验证不适用于控制器(@Size - 注释)?