Docker Hub 使用量和速率限制

重要

Docker 正在推出增强的订阅计划。我们的新计划已打包 具有更多功能、更高的使用限制和简化的定价。新的 订阅计划将在 或 2024 年 12 月 10 日之后。Docker Hub 镜像拉取或存储不收取任何费用 在 2025 年 2 月 28 日之前发生。查看公告 升级的 Docker 计划了解更多详情,并了解您的使用情况如何适应这些更新。

Docker 可能会对 Docker Hub 施加使用和速率限制,以确保资源的公平性 消费并保持服务质量。了解您的使用情况有助于您 有效管理您和您组织的使用情况。

用法

用法是指:

  • Pulls:从 Docker Hub 传输的数据量
  • 存储:存储在 Docker Hub 上的数据量

合理使用

在使用 Docker 平台时,用户应注意过多的数据 传输、拉取速率或数据存储可能会导致限制或其他 收费。为确保公平使用资源及维持服务质素,我们保留 对账户施加限制或收取额外费用的权利 表现出过多的数据和存储消耗。

查看 Docker Hub 使用情况

  1. 登录到 Docker Hub

    如果要下载组织所有成员的使用情况,则必须 登录到作为该组织所有者的账户。否则 您只能查看自己的个人使用情况。

  2. 在 Docker Hub 中,从顶级导航菜单中选择 Usage (使用情况)。

  3. 在下拉列表中,选择是要查看个人数据还是组织数据。

  4. 使用情况页面显示 Pulls (拉取) 和 Storage usage (存储使用情况)。

  5. 选择使用类型并使用可用的筛选条件查看使用情况。

下载 Docker Hub 使用情况

您可以下载您或您组织的 Docker Hub 使用情况的 CSV 文件。要下载文件:

  1. 登录到 Docker Hub

    如果要下载组织所有成员的使用情况,则必须 登录到作为该组织所有者的账户。否则 您只能查看自己的个人使用情况。

  2. 在 Docker Hub 中,从顶级导航菜单中选择 Usage (使用情况)。

  3. 在下拉列表中,选择是要查看个人数据还是组织数据。

  4. 自选。使用 Filter by privacy 下拉列表选择 PublicPrivate pulls。

  5. 使用 FromTo 筛选条件选择数据的日期范围。

  6. 选择 Send report to email(将报告发送到电子邮件),让 Docker 通过电子邮件向您发送指向数据的链接 文件。请注意,电子邮件处理时间可能会有所不同。

该文件包含以下逗号分隔值:

CSV 列定义使用指南
datehour导致数据传输的拉取的日期和时间 ()。yyyy/mm/dd/hh这有助于识别高峰使用时间和模式。
user_name拉取镜像的用户的 Docker ID这使组织所有者可以跟踪每个用户的数据消耗并有效地管理资源。
repository提取的镜像的存储库的名称。这样,您就可以确定哪些存储库访问最频繁并消耗大部分数据传输。
access_token_name用于使用 Docker CLI 进行身份验证的访问令牌的名称。 令牌由 Docker 客户端在用户登录时自动生成。generated个人访问令牌通常用于对自动化工具(Docker Desktop、CI/CD 工具等)进行身份验证。这对于识别哪个 automated system 发出了拉取非常有用。
ips用于拉取镜像的 IP 地址。此字段是聚合的,因此可能会显示多个 IP 地址,表示在同一日期和时间内用于提取镜像的所有 IP。这有助于您了解数据传输的来源,这对于诊断和识别自动或手动拉取中的模式非常有用。
repository_privacy拉取的镜像存储库的隐私状态。这可以是 或 。publicprivate这区分了公有仓库和私有仓库,以确定拉取影响的数据传输阈值。
tag镜像的标记。仅当拉取请求包含标签时,该标签才可用。这有助于识别镜像。标记通常用于标识镜像的特定版本或变体。
digest镜像的唯一镜像摘要。这有助于识别镜像。
version_checks为每个镜像存储库的日期和时间累积的版本检查次数。根据客户端,拉取请求可以执行版本检查以验证镜像或标签是否存在,而无需下载它。这有助于确定版本检查的频率,您可以使用这些频率来分析使用趋势和潜在的意外行为。
pulls每个镜像存储库的日期和时间累积的拉取次数。这有助于确定存储库提取的频率,您可以使用它来分析使用趋势和潜在的意外行为。

优化和管理 Docker Hub 使用情况

使用以下步骤来帮助优化和管理 Docker Hub 的使用情况 个人和组织。

  1. 查看您的 Docker Hub 使用情况

  2. 使用 Docker Hub 使用情况数据来确定哪些账户消耗最多。 数据,确定高峰使用时间,并确定与哪些镜像相关 数据使用量最大。此外,请查找使用趋势,例如 以后:

    • 低效的拉取行为:识别经常访问的存储库 评估您是否可以优化缓存实践或将使用情况整合到 减少拉扯。
    • 低效的自动化系统:检查哪些自动化工具,例如 CI/CD 管道可能会导致更高的拉取速率,并对其进行配置以避免 不必要的镜像拉取。
  3. 通过执行以下操作来优化镜像拉取:

    • 使用缓存:通过镜像或在 CI/CD 管道中实施本地镜像缓存,以减少 redundant pull 的 pull 操作。
    • 自动化手动工作流程:通过配置自动化来避免不必要的拉取 系统,仅当有新版本的镜像可用时才提取。
  4. 通过定期审核和删除来优化存储库的大小 未标记、未使用或过时的镜像。

  5. 通过升级或购买附加组件来提高您的限制。有关详细信息,请参阅 Docker 定价

  6. 对于组织,通过执行 以后:

拉取归因

拉取可以归因于个人或组织命名空间

私有拉取

私有仓库的拉取归属于仓库的命名空间所有者。

公共拉取

从公共仓库中提取镜像时,归属是根据域隶属关系和组织成员身份确定的。

已验证域所有权

从链接到已验证域的帐户中提取镜像时,属性将设置为该的所有者

单个组织成员资格

  • 如果已验证域的所有者是一家公司,并且用户仅属于该公司内的一个组织,则抽取将归因于该特定组织。
  • 如果用户仅属于一个组织,则拉取将归因于该特定组织。

多个组织成员资格

如果用户是公司下多个组织的成员,则拉取将归因于用户的个人命名空间。

速率限制

速率限制适用于拉取使用。用户的速率限制等于其个人账户或他们所属的任何组织的最高权利。要利用此功能,您必须以经过身份验证的用户身份登录 Docker Hub。为 有关详细信息,请参阅如何对 Pull 进行身份验证 请求。未验证(匿名) 用户将通过 IP 强制执行限制。

  • 拉取计入执行拉取的用户,而不是镜像的所有者。
  • 拉取请求定义为注册表清单上最多两个请求 URL () 的 URL ()。GET/v2/*/manifests/*
  • 普通镜像拉取会发出单个清单请求。
  • 多架构镜像的拉取请求发出两个清单请求。
  • HEAD请求不计算在内。
  • 某些镜像可通过 Docker Sponsored Open 进行限制 SourceDocker Verified Publisher 程序。

重要

Docker 正在推出增强的订阅计划。我们的新计划已打包 具有更多功能、更高的使用限制和简化的定价。新的 订阅计划将在 或 2024 年 12 月 10 日之后。Docker Hub 镜像拉取或存储不收取任何费用 在 2025 年 2 月 28 日之前发生。查看公告 升级的 Docker 计划了解更多详情,并了解您的使用情况如何适应这些更新。

请注意,当这些更改生效时,以下 Pull Request 和 limits 将生效:

  • Docker 拉取请求包括版本检查和任何 作为拉取的结果发生。根据客户端的不同,可以 验证镜像或标签是否存在而不下载它,方法是执行 版本检查。docker pull
  • 对普通镜像的拉取请求会对单个 manifest
  • 多架构镜像的拉取请求将计为每个镜像的 1 次拉取 不同的架构。
  • 拉取计入执行拉取的用户,而不是 镜像。

Docker Hub 的下载速率限制是多少?

重要

2025 年 3 月 3 日之后,通过 Docker 的增强订阅计划,用户或具有 付费订阅。

使用 Docker Hub 的匿名用户和 Docker 个人用户将遇到镜像拉取请求的速率限制。对于经过身份验证的用户,每个用户将有 40 次拉取/小时的速率限制;对于未经身份验证的使用,每个 IP 地址将有 10 次拉取/小时的速率限制。

Docker Hub 根据 account 类型。拉取速率限制基于 单个 IP 地址。下表反映了 Docker 的当前速率限制:

用户类型速率限制
匿名用户每个 IP 地址每 6 小时 100 次拉取
经过身份验证的用户每 6 小时拉取 200 次
付费 Docker 订阅的用户每天最多 5000 次拉动

如果您需要更多数量的拉取,您还可以购买 Enhanced Service Account 附加组件

我怎么知道我的拉取请求受到限制?

当您发出拉取请求并且超出限制时,Docker Hub 会在请求清单时返回带有以下正文的响应代码:429

You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limits

此错误消息显示在 Docker CLI 或 Docker Engine 日志中。

如何查看我当前的汇率?

对 Hub 的有效 API 请求通常包括以下速率限制标头 响应:

ratelimit-limit
ratelimit-remaining
docker-ratelimit-source

这些标头在 GET 和 HEAD 请求中都返回。

注意

使用 GET 模拟真正的拉取并计入限制。使用 HEAD 则不会。 要检查您的限制,您需要 、 和 已安装。curlgrepjq

要匿名获取令牌,如果您要匿名拉取:

$ TOKEN=$(curl "https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull" | jq -r .token)

要使用用户帐户获取令牌,如果您已经过身份验证(将 username 和 password 在以下命令中):

$ TOKEN=$(curl --user 'username:password' "https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull" | jq -r .token)

然后,要获取显示限制的标头,请运行以下命令:

$ curl --head -H "Authorization: Bearer $TOKEN" https://registry-1.docker.io/v2/ratelimitpreview/test/manifests/latest

这应该返回以下标头:

ratelimit-limit: 100;w=21600
ratelimit-remaining: 76;w=21600
docker-ratelimit-source: 192.0.2.1

在前面的示例中,拉取限制为每 21600 秒 100 次拉取 (6 小时),还剩下 76 次拉取。

我没有看到任何 RateLimit 标头

如果您没有看到任何 RateLimit 标头,可能是因为镜像或您的 IP 与出版商、提供商或开源合作时不受限制 组织。这也可能意味着您正在拉取的用户是 付费 Docker 计划。否则,拉取该镜像不会计入拉取限制 请参阅这些标头。但是,付费 Docker 订阅的用户会提取更多 每天超过 5000 次需要服务 帐户订阅。

即使我有付费的 Docker 订阅,我也被限制在较低的费率上

要利用付费 Docker 订阅中包含的更高限制, 您必须使用 用户帐户。

Pro、Team 或 Business 层不会增加其他 用户。请参阅 Docker 的 Open 源发布者大型 组织产品。

其他限制

Docker Hub 还具有总体速率限制,以保护应用程序和 基础设施。此限制适用于对 Hub 资产的所有请求,包括 网页、API 和镜像拉取。该限制是按 IP 应用的,虽然 根据负载和其他因素限制随时间的变化,这是按顺序的 每分钟数千个请求。总速率限制适用于所有用户 无论帐户级别如何,都是一样的。

您可以通过查看错误代码来区分这些限制。这 “overall limit” 返回一个简单的响应。拉动 limit 返回一条较长的错误消息,其中包含指向此页面的链接。429 Too Many Requests

如何验证拉取请求?

以下部分包含有关如何登录 Docker Hub 以 对拉取请求进行身份验证。

Docker 桌面

如果您使用的是 Docker Desktop,则可以从 Docker 登录到 Docker Hub 桌面菜单。

从 Docker Desktop 菜单中选择 Sign in / Create Docker ID,然后按照 屏幕上的说明以完成登录过程。

Docker 引擎

如果您使用的是 Docker Engine 的独立版本,请从终端运行命令以使用 Docker Hub 进行身份验证。有关如何操作的信息 要使用该命令,请参阅 Docker Logindocker login

Docker 群

如果你运行的是 Docker Swarm,则必须使用该标志来 使用 Docker Hub 进行身份验证。有关更多信息,请参阅创建 服务。如果你 正在使用 Docker Compose 文件部署应用程序堆栈,请参阅 Docker 堆栈部署--with-registry-auth

GitHub 操作

如果您使用 GitHub Actions 构建 Docker 镜像并将其推送到 Docker Hub,则 请参阅 登录操作。如果你是 使用另一个 Action,您必须在类似的 进行身份验证的方式。

Kubernetes (简体中文)

如果你运行的是 Kubernetes,请按照 从 私人 Registry 以获取有关身份验证的信息。

第三方平台

如果您使用的是任何第三方平台,请按照提供商关于使用注册表身份验证的说明进行操作。