.NET 和 Docker 简介Introduction to .NET and Docker
本文内容
.NET Core 可以在 Docker 容器中轻松运行。容器提供一种轻量级方法,用于将应用程序与主机系统的其他组件分隔,以便仅共享内核,并使用提供给应用程序的资源。如果你不熟悉 Docker,强烈建议通读 Docker 的概述文档。
若要详细了解如何安装 Docker,请参阅 Docker 桌面:社区版的下载页面。
Docker 基础知识Docker basics
首先来熟悉几个概念。Docker 客户端具有命令行接口程序,用于管理映像和容器。如前文所述,应花时间通读 Docker 概述文档。
映像Images
映像是构成容器基础的文件系统更改的有序集合。映像不具有状态,并且是只读的。大多情况下,一个映像以另一个映像为基础,但具有一些自定义设置。例如,为应用程序创建新映像时,可将其基于已包含 .NET Core 运行时的现有映像。
由于容器是从映像创建的,因此,映像具有一组在容器启动时运行的运行参数(例如启动可执行文件)。
容器Containers
容器是映像的可运行实例。生成映像时,部署应用程序和依赖项。然后可以实例化多个容器,且每个容器相互独立。每个容器实例具有其自己的文件系统、内存和网络接口。
注册表Registries
容器注册表是映像存储库的集合。映像可以基于注册表映像。可以直接从注册表中的映像创建容器。Docker 容器、映像和注册表之间的关系是构建和生成容器化应用程序或微服务时的一个重要概念。此方法大大缩短了开发和部署之间的时间。
Docker 具有一个托管在 Docker 中心的公共注册表,可供用户使用。.NET Core 相关映像均在 Docker 中心列出。
Microsoft 容器注册表 (MCR) 是 Microsoft 提供的容器映像的官方来源。MCR 构建在 Azure CDN 之上,可提供用于全局复制的映像。但是,MCR 没有面向公众的网站,了解有关 Microsoft 提供的容器映像的主要方法是通过 Microsoft Docker 中心页面。
DockerfileDockerfile
Dockerfile 是定义可创建映像的一组指令的文件。Dockerfile 中的每个指令创建映像中的一个层。大多数情况下,在重新生成映像时,只会重新生成已发生更改的层。可以将 Dockerfile 分发给其他人,便于他们采用你创建映像的方式重新创建一个新映像。尽管可以分发有关如何创建映像的指令 ,但分发映像的主要方式是将其发布到注册表。
.NET Core 映像.NET Core images
官方 .NET Core Docker 映像发布到 Microsoft 容器注册表 (MCR),用户可以在 Microsoft.NET Core Docker 中心存储库中找到这些映像。每个存储库包含 .NET(SDK 或运行时)和可以使用的操作系统的不同组合的映像。
Microsoft 提供适合特定场景的映像。例如,ASP.NET Core 存储库提供针对在生产环境中运行 ASP.NET Core 应用生成的映像。
Azure 服务Azure services
各种 Azure 服务都支持容器。为应用程序创建 Docker 映像并将其部署到以下服务之一:
Azure Kubernetes 服务 (AKS)使用 kubernetes 缩放和编排 Linux 容器。
Azure 应用服务在 PaaS 环境中使用 Linux 容器部署 Web 应用或 API。
Azure 容器实例将容器托管在云中,而不使用任何高级管理服务。
Azure Batch使用容器运行重复的计算作业。
Azure Service Fabric使用 Windows Server 容器直接迁移 .NET 应用程序并将其现代化为微服务
Azure 容器注册表在所有类型的 Azure 部署中存储和管理容器映像。