这是系列文章中的第二篇文章,将介绍下载容器镜像时的限制。
В
下载频率限制之前已在我们的
免费计划,匿名用户:100 小时内下载 6 次
免费计划,授权用户:200 小时内 6 次下载
专业计划:无限制
团队计划:不限
Docker 下载频率定义为对 Docker Hub 的清单请求数。 图片下载频率限制取决于请求图片的帐户类型,而不是图片所有者帐户的类型。 对于匿名(未授权)用户,下载频率与 ip 地址相关联。
注: 您将收到更多的细微之处和最佳实践案例
我们收到来自客户和社区的关于容器镜像层的问题。 我们在限制下载频率时不考虑图像层,因为我们限制清单下载,层数(blob 请求)目前没有限制。 此更改基于社区反馈,以使其更加用户友好,因此用户不必在使用的每种外观上计算层数。
Docker Hub镜像下载频率详解
我们花了很多时间分析从 Docker Hub 下载图像以确定速度限制的原因,以及如何限制速度。 我们所看到的证实了几乎所有用户都在以典型工作流程的可预测速率下载图像。 但是,少数匿名用户的影响很明显,例如,大约 30% 的下载量仅来自 1% 的匿名用户。
新限制基于此分析,因此我们的大多数用户不会受到影响。 这些限制是为了反映开发人员的正常使用情况——学习 Docker、开发代码、构建图像等。
帮助开发者更好地理解下载频率限制
现在我们了解了影响以及边界应该在哪里,我们必须确定这些限制操作的技术条件。 限制从 Docker 注册表下载图像非常困难。 您不会在注册表的描述中找到用于下载的 API - 它根本不存在。实际上,下载图像是对 API 的清单和 blob 请求的组合,它们的执行方式不同,具体取决于客户端状态和请求的图像。
例如,如果您已经有一个图像,Docker 引擎将发出一个清单请求,根据接受的清单了解它已经具有所有必要的层,然后停止。 另一方面,如果您正在下载支持多种体系结构的图像,清单请求将返回每个支持的体系结构的图像清单列表。 然后,Docker 引擎将针对其运行的特定架构发出另一个清单请求,作为回报,它将获得映像中所有层的列表。 然后它将查询每个缺失的图层(blob)。
注: 这个主题在
事实证明,下载一张图片其实就是一两次manifest请求,以及从零到无穷大——层(blob)的请求。 过去,Docker 逐层跟踪下载频率,因为这与带宽使用情况最为相关。 但是,尽管如此,我们还是听取了社区的意见,这更困难,因为您需要跟踪请求的层数,这将导致忽略有关使用 Dockerfile 的最佳实践,并且对于只想在不了解细节的情况下使用注册表。
所以我们根据清单请求来限制请求的数量。 这与下载图片有直接关系,用户很容易理解。 确实存在细微差别 - 如果您尝试下载已经存在的图像,即使您不下载图层,该请求仍会被考虑在内。 无论如何,我们希望这种限制下载频率的方法既公平又对用户友好。
期待您的反馈
我们将监控限制并根据常见用例进行适当调整,以确保限制适用于每种类型的用户,尤其是,我们将尽量不阻止开发人员开展工作。
在接下来的几周内,请继续关注另一篇关于根据这些变化调整 CI 和战斗系统的文章。
最后,作为我们对开源社区支持的一部分,我们将在 1 月 XNUMX 日之前为开源提供新的定价计划。 如需申请,请填写表格
有关服务条款最新变更的更多信息,请访问
对于那些需要提高图像下载频率限制的人,Docker 提供了无限图像下载功能。
来源: habr.com