你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure 容器注册表中的工件缓存优化映像拉取

Azure 容器注册表的制品缓存功能允许您在公共存储库和私有存储库中缓存容器映像。

工件缓存通过 Azure 容器注册表(ACR)实现更快、更可靠的拉取操作。 它使用异地复制和可用性区域支持等功能来提高可用性和更快的映像拉取速度。 可以通过专用网络访问缓存注册表,以符合防火墙配置和符合性标准。

工件缓存解决了公共注册表施加的拉取限制的难题。 建议使用上游源凭据对缓存规则进行身份验证。 然后,可以从本地 ACR 拉取映像,有助于减轻速率限制的影响。

项目缓存功能在 “基本”、“ 标准”“高级”服务层级中可用。 可以在 Azure 门户中 或使用 Azure CLI 启用项目缓存规则。

术语

使用工件缓存时,了解以下术语很有帮助:

  • 缓存规则:你创建的规则,用于将项目从受支持的存储库拉取到缓存中。 缓存规则包含四个部分:

    • 规则名称:缓存规则的名称。 例如,Hello-World-Cache
    • :源注册表的名称。
    • 存储库路径:要查找和检索要缓存的项目的存储库的源路径。 例如,docker.io/library/hello-world
    • 新的 ACR 存储库命名空间:用于存储项目的新存储库路径的名称。 例如,hello-world。 ACR 实例中尚不存在存储库。
  • 凭据:为源注册表设置的用户名和密码。 需要凭据才能使用公共或专用存储库进行身份验证。 凭据包含四个部分:

    • 凭据:凭据的名称。
    • 源注册表登录服务器:源注册表的登录服务器。
    • 源身份验证:用于存储凭据的密钥保管库位置。
    • 用户名和密码机密:包含用户名和密码的机密。

当前限制

使用项目缓存时,请记住以下限制:

  • 仅当针对可用容器映像至少完成一次映像拉取后,才会发生缓存。 对于每个可用的新映像,必须完成新的映像拉取。 目前,当新标记可用时,工件缓存不会自动拉取映像的新标记。
  • 构件缓存最多支持一千个缓存规则。
  • 工件缓存规则不能与其他缓存规则重叠。 换句话说,如有适用于某个注册表路径的工件缓存规则,则不能添加与其重叠的另一个缓存规则。

上游支持

构件缓存目前支持以下上游注册表。

警告

要从 Docker Hub 获取内容,您必须使用 Azure CLIAzure 门户 生成凭据集。

某些公共 Docker 中心映像映射到公开访问的命名空间 library。 在这种情况下,如果未包含 library 路径,工件缓存将自动包含它。

上游注册表 支持 可用性
Docker Hub 仅支持经过身份验证的拉取。 Azure CLI、Azure 门户
Microsoft 工件注册表 仅支持未经过身份验证的拉取。 Azure CLI、Azure 门户
AWS 弹性容器注册表 (ECR) 公共图库 仅支持未经过身份验证的拉取。 Azure CLI、Azure 门户
GitHub 容器注册表 支持经过身份验证和未经身份验证的拉取。 Azure CLI、Azure 门户
Quay 支持经过身份验证和未经身份验证的拉取。 Azure CLI、Azure 门户
Kubernetes 容器映像注册表 (registry.k8s.io 支持经过身份验证和未经身份验证的拉取。 Azure CLI
Google Artifact Registry (*.pkg.dev 仅支持经过身份验证的拉取。 Azure CLI
旧版 Google 容器注册表 (gcr.io 支持经过身份验证和未经身份验证的拉取。 Azure CLI

Google Artifact Registry 的身份验证方法

若要从专用 Google Artifact Registry (GAR) 设置 Artifact 缓存,我们建议使用服务帐户密钥(在 Google Cloud 控制台中创建)对 GAR 进行身份验证。 可以为服务帐户密钥(例如 3 个月)定义自定义到期日期,并将密钥保存在 Azure Key Vault 中。

虽然可以使用访问令牌(从 gcloud CLI 生成)进行身份验证,但不建议与项目缓存一起使用,因为访问令牌会在 1 小时后过期。

有关如何创建服务帐户密钥的详细信息,请参阅 使用 Google Artifact Registry 进行身份验证。 获得服务帐户密钥后,将其另存为 Azure Key Vault 中的机密。 然后,将凭据集的密码指向此机密。 用户名应设置为:

  • _json_key 如果使用的是创建文件时提供的 JSON 格式的服务帐户密钥。
  • _json_key_base64 如果您对帐户密钥文件的所有内容进行 base64 编码。

若想获取关于创建凭据集的更多信息,请按照下一部分的链接操作。

后续步骤