Mise à jour : 28 mars 2025
Lecture : 7 min
Les nouvelles limites de Docker Hub relatives aux pulls d'images vont affecter les pipelines GitLab. Voici ce qu'il faut savoir.
Le 1er avril 2025, Docker va mettre en place de nouvelles limites de débit relatives aux pulls d'images sur Docker Hub, susceptibles d'impacter de manière significative les pipelines CI/CD de développement logiciel, y compris ceux qui s'exécutent sur GitLab. Le changement le plus notable : un plafond fixé à 10 pulls d'images par heure pour les utilisateurs non authentifiés.
À compter du 1er avril, Docker va appliquer les limites strictes suivantes aux pulls d'images (téléchargements d'images) :
Type d'utilisateur | Limite de pulls d'images par heure | Nombre de dépôts publics | Nombre de dépôts privés |
---|---|---|---|
Business, Team, Pro (authentifié) | Illimité (utilisation raisonnable) | Illimité | Illimité |
Personal (authentifié) | 100 | Illimité | Jusqu'à 1 |
Utilisateurs non authentifiés | 10 par adresse IPv4 ou sous-réseau IPv6/64 | Non applicable | Non applicable |
Ces nouveaux quotas sont particulièrement importants pour les raisons suivantes :
Impact sur les pulls directs depuis Docker Hub
Si vos pipelines CI/CD effectuent des pulls directement depuis Docker Hub sans authentification, ils seront limités à 10 pulls d'images par heure et par adresse IP. Dans le cas de pipelines exécutés fréquemment ou sur plusieurs projets partageant la même infrastructure de runner, cette limite sera rapidement atteinte, ce qui entraînera des échecs de pipeline.
Impact sur le proxy de dépendances de GitLab
La fonctionnalité de proxy de dépendances de GitLab permet de mettre en cache des images Docker dans GitLab pour accélérer les pipelines et réduire la dépendance aux registres externes. Cependant, dans sa version actuelle, ce proxy effectue des pulls d'images depuis Docker Hub en tant qu'utilisateur non authentifié, ce qui signifie qu'il est lui aussi soumis à la limite des 10 pulls d'images par heure.
Impact sur les runners hébergés
Sur GitLab.com, les runners hébergés s'appuient sur le cache pull-through de Google Cloud, qui met en miroir les images fréquemment téléchargées. Cela permet d'éviter les limites de débit, comme pour les images de job définies comme image:
ou services:
dans votre fichier .gitlab-ci.yml
.
Tout se complique légèrement lorsque les images sont téléchargées dans l'environnement du runner. Le cas le plus courant de pull d'images pendant l'exécution du runner concerne la création d'une image à l'aide de Docker-in-Docker ou de Kaniko. Dans ce scénario, l'image Docker Hub définie dans votre Dockerfile
fait l'objet d'un pull directement depuis Docker Hub. Elle est donc susceptible d'être affectée par les limites de débit.
Nous travaillons activement à la recherche de solutions pour atténuer les impacts liés à ces nouvelles limites :
Option 1 : configurez l'authentification Docker Hub dans vos pipelines
Si vos pipelines effectuent des pulls directement depuis Docker Hub, vous pouvez configurer l'authentification afin d'augmenter votre limite de taux à 100 pulls d'images par heure (ou illimitée avec un abonnement payant à Docker Hub).
Pour cela, ajoutez vos identifiants de connexion Docker Hub aux variables CI/CD de votre projet ou groupe (ne les insérez pas directement dans le fichier .gitlab-ci.yml
). Consultez les instructions détaillées de notre documentation sur l'utilisation d'images Docker pour configurer correctement la variable CI/CD DOCKER_AUTH_CONFIG
.
Option 2 : utilisez le registre de conteneurs GitLab
Effectuez un push des images Docker que vous utilisez le plus souvent dans votre registre de conteneurs GitLab afin d'éviter de devoir effectuer un pull d'images depuis Docker Hub pendant l'exécution des pipelines CI/CD. Procédez comme suit :
docker pull busybox:latest
docker tag busybox:latest $CI_REGISTRY_IMAGE/busybox:latest
docker push $CI_REGISTRY_IMAGE/busybox:latest
Puis ajoutez cette ligne de commande dans votre fichier .gitlab-ci.yml
:
image: $CI_REGISTRY_IMAGE/busybox:latest
Option 3 : utilisez le proxy de dépendances de GitLab
La fonctionnalité de proxy de dépendances de GitLab permet de mettre en cache les images Docker, tout en servant de proxy entre vos pipelines CI/CD et les registres Docker Hub, réduisant ainsi la dépendance aux registres externes et les risques liés aux limites de débit.
Options d'authentification actuelles :
Une fois l'authentification correctement configurée, vous pouvez procéder comme suit :
image:${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/busybox:latest
Option 4 : envisagez d'acheter un abonnement payant à Docker Hub
Pour les équipes qui utilisent Docker Hub de manière intensive, la mise à niveau vers un abonnement Docker payant (Team ou Business) permet d'accéder à un nombre illimité de pulls, ce qui peut s'avérer la solution la plus simple.
Quelle que soit l'option que vous choisissez, tenez compte de ces bonnes pratiques pour réduire au maximum l'impact des nouvelles limites de débit imposées par Docker Hub :
latest
pour éviter les pulls inutiles.Remarque : selon la documentation de Docker Hub, le nombre de pulls augmente dès que vous effectuez le pull d'un manifeste d'image, et non en fonction de la taille de l'image ou du nombre de couches.
Dès maintenant
1er avril 2025
17 avril 2025
Nous vous recommandons d'appliquer ces mesures bien dès maintenant pour éviter des échecs de pipelines inattendus. Pour la plupart des utilisateurs, configurer le proxy de dépendances avec l'authentification Docker Hub est la solution la plus efficace à long terme.
Vous avez des questions ou besoin d'aide pour la mise en œuvre ? Consultez ce ticket dans lequel notre équipe fournit une assistance dédiée à ces changements.