探索 Docker

已完成

Contoso Windows Server 管理员需要了解 Docker、Docker 容器、容器运行时以及如何在 Windows Server 上运行它们。

Docker 和容器运行时概述

Docker Inc. 是一家整合了开源工具、解决方案和基于云的服务的公司,这些工具、解决方案和服务提供了一种通用模型,用于将应用代码打包(也称为容器化)为软件开发的标准化单元。 此标准化单元称为 Docker 容器,它是一种包装在完整文件系统中的软件,其中包括需要运行的所有内容:代码、运行时、系统工具、系统库以及可安装在服务器上的任何内容。

为了支持 Docker 容器,提供了两个有用的基础组件,运行容器的用户通常会隐藏或忽略这两个组件。 这两个组件是容器运行时和支持容器的 OS 功能。 在 Windows Server 上,支持 Docker 容器的功能简称为“容器”。 此功能与名为“主机计算服务 (HCS)”的组件交互。 HCS 负责在 Windows Server 上协调虚拟化平台,并且它是同时支持容器和 Hyper-V VM 的低版本 API。

位于用于计划容器的 OS 功能之上的是容器运行时。 容器运行时位于 CLI、UI 或容器业务流程协调程序与基础 OS 功能之间。 容器运行时的工作是将用户或容器业务流程协调程序发出的命令转换为 OS 平台功能。 例如,当你要求 Docker CLI 运行新容器时,CLI 将与容器运行时交互,后者又以它理解的方式将命令发送到 OS。 有了容器运行时,上述层就不需要知道 OS 期望如何接收命令。 从用户的角度来看,这一点很重要,因为不同的容器运行时具有不同的特性和功能。

自动生成用户界面说明的屏幕截图。

有许多不同的容器运行时可用于在 Windows Server 上运行容器。 最常见的是:

  • Moby 项目。 Moby 是 Docker 在其基础上生成自己的商业项目的开源项目。 在 Windows Server 上,Moby 是一个社区支持的项目,它使用 dockerd 作为容器运行时。 Moby 非常适合用于测试 Windows Server 上的容器。 安装后,Moby 不仅提供 dockerd 容器运行时,还提供 CLI 来与 Windows Server 上的容器进行交互。

注意

Windows 和 Windows Server 上的 Dockerd 使用 HCSv1。 在 Linux 上,Moby 已转变为使用 containerd 作为容器运行时。 目前正在利用更新和改进的 HCSv2 接口将 Moby 移动到 Windows 上的 containerD。

  • ContainerD。 ContainerD 是开源容器运行时,最近已被确定为 Kubernetes 环境的首选容器运行时。 ContainerD 可在生产环境中使用,并且在 Kubernetes 环境中运行时是 Windows Server 2022 的默认容器运行时。 安装后,ContainerD 不提供用于与容器交互的 CLI。 可以改用其他开源 CLI,例如 CRICTL 或 NerdCTL。

  • Mirantes 容器运行时 (MCR)。 MCR 的正式名称为 Docker Enterprise Edition (Docker EE),提供与 Docker CE 相同的功能以及专为企业部署构建的额外功能。 使用 Docker Swarm 作为容器业务流程协调程序时,建议使用 MCR。 安装后,MCR 提供容器运行时以及与 Docker 和 Moby 相同的 CLI 体验。

注意

另一个组件名为适用于 Windows 的 Docker Desktop,可以在 Windows 10 和 11 上用于开发目的

在 Windows Server 上运行容器

在 Windows Server 上运行容器之前,需要确定要在环境中使用的容器运行时。 容器运行时将规定需要遵循的安装过程。 有关 Windows Server 上的选项以及如何安装每个选项的详细信息,请参阅如何准备 Windows Server 主机以使用容器

重要

如果计划对容器使用 Hyper-V 隔离模式,还需要在主机服务器上安装 Hyper-V 服务器角色。 此外,如果主机服务器本身就是 VM,则需要在安装 Hyper-V 角色之前启用嵌套虚拟化。 由于 Windows 10 和 11 默认在 Hyper-V 隔离模式下运行基于 Windows 的容器,因此为了支持此默认模式,必须在 Windows 10 和 11 主机环境上安装 Hyper-V 功能。

Docker Hub

容器基于容器映像构建,这些映像可存储在存储库中。 存储库充当可构建、存储、保护和共享容器映像的位置。 Docker Hub 是一种由 Docker 管理的基于 Web 的联机库服务,可在其中执行以下操作:

  • 在联机存储库中注册、存储和管理你自己的 Docker 映像,然后与他人共享。

  • 访问来自软件供应商、开源项目和其他社区成员的 100,000 多个容器映像。

Microsoft 容器注册表

Microsoft 通过 mcr.microsoft.com 上的 Microsoft Container Registry (MCR) 提供容器映像。 它是 Microsoft 提供的容器映像的官方来源。 无论在何处发现 Microsoft 容器映像,拉取源都是 mcr.microsoft.com。

注意

Azure 容器注册表是一种 Azure 服务,可用于构建你自己的容器映像存储库。 可以使用此存储库来存储和管理所有类型的容器部署的映像。