<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Docker Hub Archives - OVHcloud Blog</title>
	<atom:link href="https://blog.ovhcloud.com/tag/docker-hub/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.ovhcloud.com/tag/docker-hub/</link>
	<description>Innovation for Freedom</description>
	<lastBuildDate>Fri, 06 Feb 2026 15:22:42 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.ovhcloud.com/wp-content/uploads/2019/07/cropped-cropped-nouveau-logo-ovh-rebranding-32x32.gif</url>
	<title>Docker Hub Archives - OVHcloud Blog</title>
	<link>https://blog.ovhcloud.com/tag/docker-hub/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Solutions at OVHcloud to overcome the Docker Hub pull rate limits</title>
		<link>https://blog.ovhcloud.com/solutions-at-ovhcloud-to-overcome-the-docker-hub-pull-rate-limits/</link>
		
		<dc:creator><![CDATA[Aurélie Vache]]></dc:creator>
		<pubDate>Fri, 11 Apr 2025 06:53:38 +0000</pubDate>
				<category><![CDATA[OVHcloud Engineering]]></category>
		<category><![CDATA[Tranches de Tech & co]]></category>
		<category><![CDATA[Docker Hub]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[OVHcloud]]></category>
		<category><![CDATA[OVHcloud Managed Kubernetes]]></category>
		<category><![CDATA[OVHcloud Managed Private Registry]]></category>
		<category><![CDATA[Public Cloud]]></category>
		<category><![CDATA[registry]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=28623</guid>

					<description><![CDATA[For the past few months, Docker has been announcing the implementation of new pull rate limits for the Docker Hub. The most significant change is the 10 pulls-per-hour limit, per IP address, for unauthenticated users that can quickly lead to a &#8220;You have reached your pull rate limit&#8221; error message. Even if these changes have [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fsolutions-at-ovhcloud-to-overcome-the-docker-hub-pull-rate-limits%2F&amp;action_name=Solutions%20at%20OVHcloud%20to%20overcome%20the%20Docker%20Hub%20pull%20rate%20limits&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="960" height="540" src="https://blog.ovhcloud.com/wp-content/uploads/2025/04/ovh_solutions_overcome_docker_hub_pull_rate_limits-1.png" alt="" class="wp-image-28707" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/04/ovh_solutions_overcome_docker_hub_pull_rate_limits-1.png 960w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/ovh_solutions_overcome_docker_hub_pull_rate_limits-1-300x169.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/ovh_solutions_overcome_docker_hub_pull_rate_limits-1-768x432.png 768w" sizes="(max-width: 960px) 100vw, 960px" /></figure>



<p>For the past few months, <a href="https://www.docker.com/blog/revisiting-docker-hub-policies-prioritizing-developer-experience/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Docker has been announcing the implementation of new pull rate limits for the Docker Hub</a>. The most significant change is the 10 pulls-per-hour limit, per IP address, for unauthenticated users that can quickly lead to a &#8220;You have reached your pull rate limit&#8221; error message.</p>



<p>Even if these changes have been implemented and rollbacked as of April 1, 2025, at OVHcloud, we are aware that these upcoming changes could impact your deployments and daily work.</p>



<p>In this blog post, you will find several solutions and best practices that can help you reduce Docker pull commands and avoid hitting Docker Hub&#8217;s pull rate limit.</p>



<h3 class="wp-block-heading">Use OVHcloud Managed Private Registry and activate the proxy cache</h3>



<figure class="wp-block-image aligncenter size-full is-resized"><img decoding="async" width="800" height="800" src="https://blog.ovhcloud.com/wp-content/uploads/2025/04/managed_private_registry.png" alt="" class="wp-image-28658" style="width:181px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/04/managed_private_registry.png 800w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/managed_private_registry-300x300.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/managed_private_registry-150x150.png 150w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/managed_private_registry-768x768.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/managed_private_registry-70x70.png 70w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p><a href="https://www.ovhcloud.com/en/public-cloud/managed-rancher-service/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">OVHcloud Managed Private Registry</a> (MPR) is a container image registry, based on CNCF project Harbor. It allows you to store and manage Docker (or OCI-compliant) container images and artifacts in a private, secure, and scalable environment, hosted in OVHcloud&#8217;s infrastructure.</p>



<p>MPR provides a <strong>proxy cache</strong> feature that helps you mirror and cache images from external registries, like <strong>Docker Hub</strong>, <strong>Github Container Registry</strong>, <strong>Quay</strong>, <strong>JFrog Artifactory Registry</strong>, etc. External registries can be private or public. This improves performance and reduces rate limits imposed by external registries 💪.</p>



<h4 class="wp-block-heading">Configure proxy cache in OVHcloud Managed Private Registry</h4>



<p>If you don&#8217;t have deployed a MPR yet, you can deploy it through the <a href="https://help.ovhcloud.com/csm/en-gb-public-cloud-private-registry-creation?id=kb_article_view&amp;sysparm_article=KB0050325" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">OVHcloud Control Panel</a>, the <a href="https://help.ovhcloud.com/csm/en-public-cloud-private-registry-creation-via-terraform?id=kb_article_view&amp;sysparm_article=KB0050330" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">OVHcloud Terraform provider</a>, the <a href="https://help.ovhcloud.com/csm/en-public-cloud-private-registry-creation-with-pulumi?id=kb_article_view&amp;sysparm_article=KB0061073" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">OVHcloud Pulumi provider</a> and even the API. Follow the guide according to your needs.</p>



<p>First, log in the <a href="https://help.ovhcloud.com/csm/en-gb-public-cloud-private-registry-connect-to-ui?id=kb_article_view&amp;sysparm_article=KB0050321" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Harbor user interface</a> on your private registry, follow the guide if you needed to.</p>



<p>⚠️ In order to activate the proxy cache, you need to log in the Harbor UI with an administrator account.</p>



<h5 class="wp-block-heading">Registry endpoint creation</h5>



<p>In the left sidebar, click on <strong>Registries</strong> (inside the Administration section).</p>



<p>Then click on the <strong>New endpoint</strong> button.</p>



<p>Select Docker Hub in the provider list, enter a name (&#8220;Docker Hub&#8221; for example), fill your Docker Hub login in Access ID field and fill your Docker Hub password in Access Secret field.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="674" src="https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.21-1024x674.png" alt="" class="wp-image-28663" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.21-1024x674.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.21-300x197.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.21-768x505.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.21-1536x1010.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.21.png 1818w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>⚠️ Note that we <strong>strongly recommend</strong> using a <strong>Docker account</strong> (even a free one) to <strong>avoid rate limits</strong>, for unanthenticated users, when pulling images. Without authentication, Docker Hub enforces strict pull limits, which may cause failures when pulling frequently used images.</p>



<p>Click on the <strong>Test connection</strong> button to test if your login and password are correct.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="620" src="https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.39-1024x620.png" alt="" class="wp-image-28664" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.39-1024x620.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.39-300x182.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.39-768x465.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.39.png 1228w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Now click on the <strong>OK</strong> button in order to create the new endpoint.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="330" src="https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.56-1024x330.png" alt="" class="wp-image-28665" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.56-1024x330.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.56-300x97.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.56-768x247.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.56-1536x494.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.56-2048x659.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>The Docker Hub endpoint is created 🎉</p>



<h5 class="wp-block-heading">Proxy cache project creation</h5>



<p>In the left sidebar, click on <strong>Projects</strong>, then click on the <strong>New project</strong> button.</p>



<p>Enter a project name (&#8220;docker-hub&#8221; for example), enable the Proxy Cache, click on the Docker Hub endpoint in the list and click on the <strong>OK</strong> button.</p>



<p>ℹ️ Note that a project is private by default, so you have to click on the Public checkbox if you want to change the visibilty of a project.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="735" src="https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-33-1024x735.png" alt="" class="wp-image-28669" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-33-1024x735.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-33-300x215.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-33-768x551.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-33.png 1182w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>⚠️ The name of a proxy cache project should not contains dot(s), indeed it can causes issues with external tools like Kaniko.</p>



<p>Your proxy cache project have been created 🎉</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="373" src="https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-34-1024x373.png" alt="" class="wp-image-28670" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-34-1024x373.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-34-300x109.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-34-768x280.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-34-1536x560.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-34-2048x746.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>⚠️ A proxy cache project works similarly to a normal Harbor project, except that you are not able to push images to a proxy cache project.</p>



<p>Now when you want to pull a Docker images hosted in the Docker Hub you proxy cached, instead of pulling directly from the Docker Hub, you need to configure your docker/podman pull commands and Kubernetes pod manifests to pull images from the OVHcloud Managed Private Registry:</p>



<pre class="wp-block-code"><code class="">$ docker pull xxxxxxxx.c1.de1.container-registry.ovh.net/docker-hub/ovhcom/ovh-platform-hello:latest
latest: Pulling from docker-hub/ovhcom/ovh-platform-hello
1f3e46996e29: Pull complete 
6aa905c35cc0: Pull complete 
Digest: sha256:fddb76f0eb92d95b3721bfa0ea87350c5d39ea262e90cd30d66f429bb40c8b07
Status: Downloaded newer image for xxxxxxxx.c1.de1.container-registry.ovh.net/docker-hub/ovhcom/ovh-platform-hello:latest
xxxxxxxx.c1.de1.container-registry.ovh.net/docker-hub/ovhcom/ovh-platform-hello:latest</code></pre>



<h3 class="wp-block-heading">Disable the AlwaysPullImages admission plugin on your MKS cluster</h3>



<figure class="wp-block-image aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="200" height="200" src="https://blog.ovhcloud.com/wp-content/uploads/2025/04/Managed-Kubernetes-Service.png" alt="" class="wp-image-28702" style="width:186px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/04/Managed-Kubernetes-Service.png 200w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Managed-Kubernetes-Service-150x150.png 150w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Managed-Kubernetes-Service-70x70.png 70w" sizes="auto, (max-width: 200px) 100vw, 200px" /></figure>



<p>By default, the <strong>AlwaysPullImages</strong> Kubernetes admission plugin is enabled in your OVHcloud Managed Kubernetes (MKS) cluster.</p>



<p>⚠️ When it is enabled, this forces the imagePullPolicy of a container to be set to <strong>Always</strong>, no matter how it is specified when creating the resource.</p>



<p>This is useful in a multitenant cluster so that users can be assured that their private images can only be used by those who have the credentials to pull them. Without this admission controller, once an image has been pulled to a node, any pod from any user can use it by knowing the image&#8217;s name (assuming the Pod is scheduled onto the right node), without any authorization check against the image.</p>



<p>But, it can cause a lot of pull requests to the Docker Hub and you can reach the rate limits.</p>



<p>So a solution can be to deactivate the AlwaysPullImages admission plugin in your MKS cluster.</p>



<p>In this blog post, we will deactivate it in the OVHcloud Control Panel.</p>



<h5 class="wp-block-heading">Enable/Disable MKS admission plugins</h5>



<p>Log in the OVHcloud Control Panel. In the left sidebar, click on the <strong>Managed Kubernetes Service</strong> and then click on the wanted MKS cluster.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="777" src="https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-15.35.01-1024x777.png" alt="" class="wp-image-28687" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-15.35.01-1024x777.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-15.35.01-300x227.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-15.35.01-768x582.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-15.35.01-1536x1165.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-15.35.01.png 2044w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>In the <strong>Cluster information</strong> section, scroll down and click on <strong>Enable/disable plugin</strong>. A popup will appear.</p>



<p>Then click on <strong>Disable</strong> for the Always Pull Images plugin and click on the <strong>Save</strong> button.</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="896" height="1024" src="https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-36-896x1024.png" alt="" class="wp-image-28691" style="width:387px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-36-896x1024.png 896w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-36-262x300.png 262w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-36-768x878.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-36.png 936w" sizes="auto, (max-width: 896px) 100vw, 896px" /></figure>



<p>⚠️ Any changes on the Admission plugins require a redeployment of the MKS cluster API server (without data loss) so the API server can be potentially not available during the redeployment.</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="541" height="1024" src="https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-37-541x1024.png" alt="" class="wp-image-28695" style="width:228px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-37-541x1024.png 541w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-37-159x300.png 159w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-37.png 572w" sizes="auto, (max-width: 541px) 100vw, 541px" /></figure>



<h3 class="wp-block-heading">Conclusion</h3>



<p>To learn more about how to use and configure <a href="https://help.ovhcloud.com/csm/fr-documentation-public-cloud-containers-orchestration-managed-private-registry?id=kb_browse_cat&amp;kb_id=574a8325551974502d4c6e78b7421938&amp;kb_category=7939e6a464282d10476b3689cb0d0ed7&amp;spa=1" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">OVHcloud private registries</a> and <a href="https://help.ovhcloud.com/csm/world-documentation-public-cloud-containers-orchestration-managed-kubernetes-k8s?id=kb_browse_cat&amp;kb_id=574a8325551974502d4c6e78b7421938&amp;kb_category=f334d555f49801102d4ca4d466a7fdd2&amp;spa=1" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">OVHcloud MKS clusters</a>, don&#8217;t hesitate to follow our guides.</p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fsolutions-at-ovhcloud-to-overcome-the-docker-hub-pull-rate-limits%2F&amp;action_name=Solutions%20at%20OVHcloud%20to%20overcome%20the%20Docker%20Hub%20pull%20rate%20limits&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
