有关 Azure 容器实例的常见问题解答

本文解答有关 Azure 容器实例的常见问题。

部署

容器映像的最大大小是什么?

可在 Azure 容器实例上部署的容器映像的最大大小为 15 GB。 根据部署时的确切可用性,你也许可以部署更大的映像,但不能保证映像大小更大。

容器映像的大小会影响部署所需的时间,因此,一般情况下,我们会尽可能地保留较小的容器映像。

如何加速容器的部署?

由于部署速度的主要决定因素之一是映像大小,因此请找到减小大小的办法。 删除不需要的层,或者减小映像中的层大小(选择较精简的基础 OS 映像)。 例如,如果运行 Linux 容器,请考虑使用 Alpine 作为基础映像,而不是使用完整的 Ubuntu Server。 同样,对于 Windows 容器,请尽可能地使用 Nano Server 基础映像。

你还应查看 Azure 容器映像中预缓存映像的列表(通过列出缓存的映像 API 获取)。 你也许可以切换出某个预缓存映像的映像层。

有关如何减少容器启动时间,请参阅更详细的指南

支持哪些 Windows 基础 OS 映像?

注意

由于 Windows 在 2020 年更新后存在后向兼容性问题,因此以下映像版本包括我们建议你在基础映像中使用的最低版本号。 使用较旧映像版本的当前部署不受影响,但新部署应遵循以下基础映像的要求。 2021 年 6 月 14 日之后,ACI 将不再支持那些使用较旧版本号的部署。

Windows Server 2016 基础映像

重要

从现在起到 2022 年 12 月 31 日,你可以继续在 Azure 容器实例上部署 Windows Server 2016 容器组。 此日期过后,将不再支持 Windows Server 2016 映像。 有关如何转换工作负荷的说明,请参阅如何将 Windows Server 2016 容器组迁移到 Windows Server 2019 映像?

注意

不支持基于半年频道版本 1709 或 1803 的 Windows 映像。

Windows Server 2019 和客户端基础映像

应在容器中使用哪个 .NET 或 .NET Core 映像层?

使用符合要求的最小映像。 对于 Linux,可以使用 runtime-alpine .NET Core 映像,从 .NET Core 2.1 版本开始就已支持此映像。 对于 Windows,如果使用完整的 .NET Framework,则需要使用 Windows Server Core 映像(仅限运行时的映像,例如 4.7.2-windowsservercore-ltsc2016)。 仅限运行时的映像较小,但不支持需要 .NET SDK 的工作负载。

注意

ACI 无法从不符合 OCI 的注册表拉取映像。

哪些类型的容器注册表与 ACI 兼容?

ACI 支持从 ACR 和其他第三方容器注册表(如 DockerHub)拉取映像。 ACI 支持从 ACR 和其他第三方 OCI 兼容容器注册表(如 DockerHub)拉取映像,而这些注册表具有向 Internet 公开的终结点。

如何将 Windows Server 2016 容器组迁移到 Windows Server 2019 映像?

  1. 确定当前正在使用的 Windows 基础映像。

    如果要直接从 Microsoft 容器注册表 (MCR) 进行拉取,则该映像名称是基础映像。

    如果使用的是专用注册表,则需要查看 Dockerfile 来标识基础映像,该映像将在“FROM”行后进行声明。

  2. 从 Windows Server 2019 中选择要使用的新基础映像。 下面是 Azure 容器实例上常用 Windows Server 2016 映像的一些示例,以及有关 Windows Server 2019 替换映像的建议。

    Windows Server 2016 映像 建议的 Windows Server 2019 映像
    mcr.microsoft.com/windows/servercore/iis mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019
    mcr.microsoft.com/windows/servercore:ltsc2016 mcr.microsoft.com/windows/servercore:ltsc2019

    若要了解详细信息,请阅读映像发现

    备注

    若要获得有关如何选择新基础映像的帮助,请创建 Azure 支持票证。

  3. 按照有关如何在 Azure 容器实例中更新容器的操作指南操作,更新 ACI 容器组以使用新的基础映像。

    如果将 MCR 用于容器注册表,则可将 MCR 映像名称直接传递到容器组映像参数中。

    如果使用专用容器注册表,请按照将容器升级到 Windows 操作系统的新版本中的步骤操作。 确保更新容器组的映像注册表参数(如果更改了这些参数)。

可用性和配额

应为容器或容器组分配多少核心和内存?

这实际上取决于工作负荷。 请从较小的数量着手,并测试容器的性能如何。 监视 CPU 和内存资源用量,然后根据在容器中部署的进程类型增加核心或内存。

另外,请务必检查所部署到的区域的资源可用性,以确定每个容器组的可用 CPU 核心数和内存上限。

注意

服务的底层基础结构使用了容器组的少量资源。 容器能够访问分配给该组的大部分而不是全部资源。 因此,为组中的容器请求资源时,请规划一个小型资源缓冲区。

ACI 在哪个底层基础结构上运行?

Azure 容器实例旨在用作无服务器按需容器服务,因此,我们希望你专注于开发容器,而不用考虑基础结构! 对于那些有好奇心的或者想要比较性能的客户,可以在采用各种 SKU 的 Azure VM 集(主要是 F 和 D 系列)上运行 ACI。 我们会持续开发和优化服务,预计这种情况将来会改变。

我想要在 ACI 上部署几千个核心 - 是否可以提高配额?

在某些情况下是可以提高的。 有关当前的配额以及可以请求提高的限制,请参阅配额和限制一文。

是否可以部署 4 个以上的核心和 16 GB 以上的 RAM?

还不可以。 目前这些数字是容器组的上限。 如有具体的要求和请求,请联系 Azure 支持部门。

ACI 何时在特定的区域推出?

此处发布了当前推出的区域。 如果你在特定的区域需要满足某项要求,请联系 Azure 支持部门。

功能和方案

如何缩放容器组?

目前,容器或容器组不可缩放。 如果需要运行更多实例,请使用我们的 API 进行自动化,并创建更多请求以在服务中创建容器组。

自定义 VNet 中运行的实例可以使用哪些功能?

可以在所选 Azure 虚拟网络中部署容器组,并将专用 IP 委托给容器组,以在 VNet 中跨 Azure 资源路由流量。 有关 Azure 容器实例的网络方案和限制,请参阅虚拟网络方案和资源

ACI 服务是否保留端口以用于服务功能?

是的,ACI 服务保留以下服务功能端口:22、1025-1027、3389-3399、9999、19000、19080、19390、19100、20000-30000、49152-65534。 请避免在容器组定义中使用这些端口。

是否可以依赖于容器组的 IP 地址?

容器组 IP 地址在创建或删除后可能会发生更改。 建议不要让应用程序代码依赖于容器组的 IP 地址。 如果想维护静态 IP 地址,还建议使用 NAT 网关应用程序网关

定价

计量器何时开始运行?

计算的容器组持续时间从我们开始提取你的第一个容器映像(对于新部署)或重启容器组(如果已部署)开始,到容器组停止为止。 请参阅容器实例定价中的详细信息。

停止容器后是否会停止计费?

停止整个容器组后,计量器将停止运行。 只要容器组中的容器正在运行,我们就会保留资源,以防需要再次启动容器。

后续步骤