{"id":97758,"date":"2020-10-21T14:42:32","date_gmt":"2020-10-21T12:42:32","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kak-masshtabiruetsya-biznes-docker-dlya-obsluzhivaniya-millionov-razrabotchikov-chast-2-ishodyashhie-dannye"},"modified":"2020-10-21T14:42:32","modified_gmt":"2020-10-21T12:42:32","slug":"kak-masshtabiruetsya-biznes-docker-dlya-obsluzhivaniya-millionov-razrabotchikov-chast-2-ishodyashhie-dannye","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/kak-masshtabiruetsya-biznes-docker-dlya-obsluzhivaniya-millionov-razrabotchikov-chast-2-ishodyashhie-dannye","title":{"rendered":"How Docker's Business Scales to Serve Millions of Developers, Part 2: Download Limits","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"How Docker&#039;s Business Scales to Serve Millions of Developers, Part 2: Download Limits\" src=\"\/wp-content\/uploads\/2020\/10\/0080c0fb89670fb26cb21906946ec03a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>This is the second article in a series; it will discuss the limitations when downloading container images.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>In <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/520528\/\">the first part<\/a><\/noindex> We have detailed the images stored in Docker Hub, the largest container image registry. We write about this to help you understand how our updated Terms of Service will affect developer teams using Docker Hub for managing container images and CI\/CD pipelines.<\/p>\n<p><\/p>\n<p>The download rate limitations were announced earlier in our <noindex><a rel=\"nofollow\" href=\"https:\/\/www.docker.com\/legal\/docker-terms-service\">Terms of Service<\/a><\/noindex>. We will take a closer look at the limitations on download rates that will take effect on November 1, 2020:<\/p>\n<p><\/p>\n<p>Free plan, anonymous users: 100 downloads every 6 hours<br \/>\nFree plan, authorized users: 200 downloads every 6 hours<br \/>\nPro plan: no limits<br \/>\nTeam plan: no limits<\/p>\n<p><\/p>\n<p>The download rate from Docker is defined as the number of manifest requests to Docker Hub. Download rate limitations depend on the type of account requesting the image, not the type of account of the image owner. For anonymous (unauthorized) users, the download rate is tied to the IP address.<\/p>\n<p><\/p>\n<p><strong>N.B.<\/strong> You will get more insights and best practice cases <noindex><a rel=\"nofollow\" href=\"https:\/\/slurm.io\/docker-videocourse?utm_source=habr&amp;utm_medium=promo&amp;utm_campaign=docker-videocourse&amp;utm_content=post_26-09-2020&amp;utm_term=dzygovbrodskiy\">in the Docker course from practitioners<\/a><\/noindex>. You can take it at your convenience\u2014both in timing and mood. <\/p>\n<p><\/p>\n<p>We receive questions from clients and the community regarding image layers. We do not count image layers against the download rate because we restrict downloading manifests, and the number of layers (blob requests) is currently unlimited. This change is based on community feedback to make it more user-friendly, so users don\u2019t need to count layers on each image they use.<\/p>\n<p><\/p>\n<h2 id=\"podrobnyy-analiz-chastot-skachivaniya-obrazov-docker-hub\">A detailed analysis of the download rates of Docker Hub images<\/h2>\n<p><\/p>\n<p>We spent a lot of time analyzing the downloading of images from Docker Hub to determine the cause of the speed limitation, as well as how exactly to impose such limitations. What we observed confirmed that virtually all users download images at a predictable speed for typical workflows. However, there is a noticeable impact from a small number of anonymous users; for example, about 30% of all downloads come from just 1% of anonymous users.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"How Docker&#039;s Business Scales to Serve Millions of Developers, Part 2: Download Limits\" src=\"\/wp-content\/uploads\/2020\/10\/7757e0d6b0892ba0f7ccb7b672792ca4.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>The new limitations are based on this analysis, so most of our users will not be affected. These limitations are designed to reflect typical usage patterns among developers \u2014 exploring Docker, writing code, creating images, etc.<\/p>\n<p><\/p>\n<h2 id=\"pomosch-razrabotchikam-dlya-luchshego-ponimaniya-ogranicheniya-chastoty-skachivaniya\">Helping developers better understand download rate limiting<\/h2>\n<p><\/p>\n<p>Now that we have understood the impact as well as where the boundaries should lie, we needed to define the technical conditions for these limitations. Limiting the download of images from the Docker registry is quite challenging. You won\u2019t find an API for uploads mentioned in the registry description \u2014 it simply doesn\u2019t exist. In fact, downloading an image consists of a combination of manifest and blob requests in the API, and they are executed differently depending on the client's state and the image being requested.<\/p>\n<p><\/p>\n<p>For example, if you already have an image, the Docker Engine will issue a manifest request, understand that it already has all the necessary layers based on the received manifest, and then stop. On the other hand, if you are downloading an image that supports multiple architectures, the manifest request will return a list of image manifests for each supported architecture. The Docker Engine will then issue another manifest request for the specific architecture it\u2019s running on, in response receiving a list of all the image layers. It will then request each missing layer (blob).<\/p>\n<p><\/p>\n<p><strong>N.B.<\/strong> This topic is explored more broadly in <noindex><a rel=\"nofollow\" href=\"https:\/\/slurm.io\/docker-videocourse?utm_source=habr&amp;utm_medium=promo&amp;utm_campaign=docker-videocourse&amp;utm_content=post_26-09-2020&amp;utm_term=dzygovbrodskiy\">the Docker course<\/a><\/noindex>, where we will cover all its tools: from basic abstractions to network parameters, nuances of working with various operating systems, and programming languages. You will get acquainted with the technology and understand where and how best to use Docker.<\/p>\n<p><\/p>\n<p>It turns out that downloading an image is actually one or two manifest requests, as well as anywhere from zero to infinity\u2014requests for layers (blobs). Historically, Docker tracked download frequency based on layers since this is most related to bandwidth usage. However, we've listened to the community that this can be more complicated, as it requires tracking the number of requested layers, which can lead to ignoring best practices regarding working with Dockerfile, as well as being less intuitive for users who simply want to work with the registry without getting into the details.<\/p>\n<p><\/p>\n<p>So we are limiting the number of requests based on manifest requests. This is directly related to image downloads, which is easy for users to understand. There is a small nuance\u2014if you try to download an image that you already have, the request will still be counted, even if you won't be downloading layers. In any case, we hope that this method of limiting download frequency will be both fair and user-friendly.<\/p>\n<p><\/p>\n<h2 id=\"zhdem-vashi-otzyvy\">We welcome your feedback.<\/h2>\n<p><\/p>\n<p>We will monitor the limitations and make appropriate adjustments based on typical use cases to ensure that the restrictions fit every type of user, and in particular, we will strive to never interfere with developers carrying out their work.<\/p>\n<p><\/p>\n<p>Stay tuned for updates in the coming weeks; there will be another article about setting up CI and production systems in light of these changes.<\/p>\n<p><\/p>\n<p>Finally, as part of our support for the open-source developer community, by November 1 we will provide new pricing plans for open-source projects. To apply, you need to fill out a form. <noindex><a rel=\"nofollow\" href=\"https:\/\/forms.gle\/vvKURDTYwok7Pc4r5\">here<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>For more information on the latest changes to the terms of service, please refer to <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/524136\/\">FAQ<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>For those who need to lift the download frequency limits, Docker offers unlimited image downloads as a feature of <noindex><a rel=\"nofollow\" href=\"http:\/\/www.docker.com\/pricing\">Pro or Team plans.<\/a><\/noindex>As always, we look forward to your feedback and questions. <noindex><a rel=\"nofollow\" href=\"mailto:pricingquestions@docker.com\">here<\/a><\/noindex>.<\/p>\n<p>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/520698\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u042d\u0442\u043e \u0432\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u0438\u0437 \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439, \u0432 \u043d\u0435\u0439 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0438 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432. \u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043c\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u043e\u0431\u0440\u0430\u0437\u044b, \u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0435 \u0432 Docker Hub, \u043a\u0440\u0443\u043f\u043d\u0435\u0439\u0448\u0435\u043c registry \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432. \u041c\u044b \u043f\u0438\u0448\u0435\u043c \u043e\u0431 \u044d\u0442\u043e\u043c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u043b\u0438, \u043a\u0430\u043a \u043d\u0430\u0448\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0423\u0441\u043b\u043e\u0432\u0438\u044f \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445 Docker Hub \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0437\u0430\u043c\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":97759,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-97758","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/kak-masshtabiruetsya-biznes-docker-dlya-obsluzhivaniya-millionov-razrabotchikov-chast-2-ishodyashhie-dannye\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0431\u0438\u0437\u043d\u0435\u0441 Docker \u0434\u043b\u044f \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0447\u0430\u0441\u0442\u044c 2: \u0418\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/kak-masshtabiruetsya-biznes-docker-dlya-obsluzhivaniya-millionov-razrabotchikov-chast-2-ishodyashhie-dannye\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-10-21T12:42:32+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-10-21T12:42:32+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47How Docker's Business Scales to Serve Millions of Developers, Part 2: Outgoing Data | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/kak-masshtabiruetsya-biznes-docker-dlya-obsluzhivaniya-millionov-razrabotchikov-chast-2-ishodyashhie-dannye","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0431\u0438\u0437\u043d\u0435\u0441 Docker \u0434\u043b\u044f \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0447\u0430\u0441\u0442\u044c 2: \u0418\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 | ProHoster","og:url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/kak-masshtabiruetsya-biznes-docker-dlya-obsluzhivaniya-millionov-razrabotchikov-chast-2-ishodyashhie-dannye","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-10-21T12:42:32+00:00","article:modified_time":"2020-10-21T12:42:32+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"97758","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:13:06","updated":"2022-10-03 12:11:36","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/97758","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=97758"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/97758\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/97759"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=97758"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=97758"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=97758"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}