.net核心Web应用程序docker映像如何在Mac OS上运行?

时间:2020-10-04 17:45:39

标签: .net docker .net-core

好吧,我知道我在这里已经是菜鸟了,但我正努力了解Docker ...我创建了一个简单的.net核心Web API应用程序,该应用程序返回一些数据。我是在Windows中完成此操作的,并推送到gitlab,但是随后我可以在Mac上克隆并按预期运行正常...

然后我创建一个包含以下内容的Dockerfile。

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app

...

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app

据我了解,核心SDK是否包含小型Nano Server Windows操作系统?这是否意味着当我在Mac上使用docker run时,它实际上在Windows上运行该应用程序-就像在Mac上的微型VM中一样?

如果这是正确的,码头工人如何知道使用Windows nano服务器,而不是使用Linux映像?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

简短答案:

因为.NET Core是跨平台的。 docker可在Mac和Windows上运行(从理论上讲,与Linux一样),该映像在任何平台上都可以正常工作。

mcr.microsoft.com/dotnet/core/sdk:3.1与平台有关。根据您选择运行Docker的体系结构,它将选择Windows Nano服务器或Linux模板。

长答案:

Docker不是VM技术。这是一项Linux功能,可为您提供隔离的环境。在Windows和Mac上无法使用Docker。 Docker使用Linux功能并在Linux环境中插入应用程序(及其相关的依赖项),并产生了运行该应用程序所需的资源(网络,RAM,磁盘,软件框架)的幻觉。

在Windows和Mac上。 Docker安装了Linux VM。并在VM内运行Docker infra。

docker info这样的

命令将提供更多详细信息。下图显示了它正在Linux上运行。

enter image description here

切换到Windows docker将为docker info命令提供不同的输出。

enter image description here