---
title: "Docker Hub limitations : sécurisez vos pipelines GitLab CI/CD en 3 étapes"
excerpt: "Docker Hub limite les téléchargements d'images de base comme php, alpine, node, etc. Sécurisez vos pipelines GitLab CI/CD en 3 étapes."
publishDate: 2025-03-29T00:00:00.000Z
tags: ["docker", "gitlab", "ci/cd"]
canonical: "https://yoandev.co/docker-hub-limitations-gitlab"
---

# Docker limite les téléchargements : sécurisez vos pipelines GitLab CI/CD en 3 étapes

À partir du **1er avril 2025**, Docker mettra en place une politique beaucoup plus stricte concernant l'utilisation de son registre public Docker Hub.

> 🔥 **Seulement 10 téléchargements d’images par heure pour les utilisateurs non authentifiés.**

Ces restrictions vont impacter **directement vos pipelines CI/CD**, y compris ceux tournant sur **GitLab**, en provoquant des erreurs inattendues lors du téléchargement d’images Docker de base comme `php`, `alpine`, `node`, etc.

## 📉 Ce que Docker change

Voici les nouvelles limites officielles de Docker Hub :

| Type d'utilisateur         | Limite de pulls      | Fenêtre |
|----------------------------|-----------------------|---------|
| 🕵️‍♂️ Non authentifié       | 10 pulls              | par heure |
| 👤 Authentifié (gratuit)    | 100 pulls             | par heure|
| 💼 Abonnement Pro/Team     | Illimité (fair use)   | selon plan |

Chaque pull (téléchargement d’image) depuis Docker Hub dans un pipeline GitLab CI **compte dans ce quota**.

## ❗️ Un pipeline à risque

Prenons ce `.gitlab-ci.yml` tout simple :

```yaml
image: php:8.4

stages:
  - test

test:
  script:
    - php -v
```

Chaque exécution télécharge l’image `php:8.4` depuis Docker Hub.  
Avec plusieurs exécutions ou jobs, le quota est vite atteint ➜ `toomanyrequests`, échec du job.

## ✅ La solution simple : héberger l’image dans GitLab

La méthode la plus rapide pour se prémunir de ces limitations est de **re-publier l’image Docker utilisée dans le GitLab Container Registry** de votre projet.

Voici les **3 étapes à suivre** :

### 1. Télécharger l’image une fois

```bash
docker pull php:8.4
```

### 2. Re-tagger pour votre registry GitLab

```bash
docker tag php:8.4 registry.gitlab.com/votre-groupe/votre-projet/php:8.4
```

### 3. Pousser l’image dans GitLab

```bash
docker push registry.gitlab.com/votre-groupe/votre-projet/php:8.4
```

## 🔁 Mise à jour du pipeline GitLab

Utilisez maintenant **votre image privée** dans `.gitlab-ci.yml` :

```yaml
image: registry.gitlab.com/votre-groupe/votre-projet/php:8.4

stages:
  - test

test:
  script:
    - php -v
```

✔️ Vous êtes maintenant à l’abri des limitations de Docker Hub.

## 🛡️ Les autres solutions proposées par GitLab

Dans son article officiel ([source GitLab](https://about.gitlab.com/blog/2025/03/24/prepare-now-docker-hub-rate-limits-will-impact-gitlab-ci-cd/)), GitLab recommande également :

- 🧾 **Configurer une authentification Docker Hub** dans vos runners (avec token)
- 📦 **Utiliser des registres privés** (AWS ECR, GitLab Registry, etc.)
- 🧰 **Optimiser les pulls et la mise en cache des images**
- 💡 **Utiliser des runners auto-hébergés avec caching local**

Mais **publier les images dans votre registry GitLab** reste **la solution la plus simple, stable et rapide à mettre en place**, surtout en environnement GitLab SaaS.

## 🧠 En résumé

| Stratégie                          | Facile ? | Protège des quotas ? |
|------------------------------------|----------|------------------------|
| Docker Hub (anonyme)               | ✅       | ❌                    |
| Docker Hub (authentifié)          | ⚠️       | 🟡 (200 pulls max)     |
| Registry GitLab (recommandé)       | ✅✅     | ✅✅✅                |

---

## 📩 Vous utilisez GitLab CI/CD avec PHP ?  
Je prépare une ressource complète avec des templates prêts à l’emploi, des bonnes pratiques et des outils pour fiabiliser vos pipelines.

👉 **Rejoignez la liste d’attente ici : [https://formation.yoandev.co/gitlab-ci-pour-php-solution-cle-en-main-pour-les-equipes-en-entreprise](https://formation.yoandev.co/gitlab-ci-pour-php-solution-cle-en-main-pour-les-equipes-en-entreprise)**
