好吧,我知道我在这里已经是菜鸟了,但我正努力了解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映像?
感谢您的帮助
答案 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上运行。
切换到Windows docker将为docker info
命令提供不同的输出。