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

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

部署

我的容器镜像最大可以有多大?

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

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

如何加快我的容器部署速度?

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

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

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

支持哪些 Windows 基础 OS 映像?

注意

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

注意

Azure 容器实例上的机密容器目前不支持 Windows 容器。

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 和其他非Microsoft容器注册表(例如 DockerHub)提取映像,前提是注册表终结点可通过 Internet 公开访问。 对受网络限制或专用终结点的支持主要限于Azure 容器注册表(ACR)。

如何将 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 进行自动化,并创建更多请求以在服务中创建容器组。

自定义虚拟网络中运行的实例可以使用哪些功能?

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

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

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

是否可以将容器组的 IP 地址作为依赖项?

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

定价

计量器何时开始运行?

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

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

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

后续步骤