Aller au contenu principal

GitLab - Utiliser des images Docker privées

Utilisez une image Docker privée de Docker Hub dans votre pipeline GitLab CI/CD. Apprenez à créer un token en lecture seule et à configurer les variables GitLab CI/CD nécessaires à l'authentification.

· 4 minutes de lecture
Voir la source
Christophe
Amoureux de Markdown, WSL et Docker ~ Curieux insatiable.
Cet article existe aussi en anglais — lire la version originale.

Traduction automatique

Cette traduction a été produite par une IA. Elle peut contenir des contresens ou des maladresses, en particulier sur les termes techniques. En cas de doute, consultez l'article de référence en anglais — c'est lui qui fait foi.

Cet article a plus d'un an, mais il a été relu le 30 juillet 2026 — son contenu est toujours exact.

GitLab - Utiliser des images Docker privées

⚡
TL;DR

Pour utiliser une image Docker privée de Docker Hub dans un pipeline GitLab CI/CD, générez d'abord un token d'accès personnel en lecture seule depuis vos paramètres Docker Hub. Ensuite, dans les paramètres CI/CD de votre projet GitLab, créez deux variables protégées et masquées : DOCKER_HUB_USERNAME pour votre nom d'utilisateur Docker et DOCKER_HUB_TOKEN_RO pour le token d'accès. Enfin, dans votre .gitlab-ci.yml, utilisez docker login avec ces variables pour vous authentifier avant de récupérer l'image.

Dans une de mes CI GitLab, j'ai eu besoin d'utiliser une image Docker stockée sur hub.docker.com dans un repository privé.

Je ne pouvais pas simplement faire un docker pull my_image parce qu'il fallait d'abord m'authentifier dans la CI avant de pouvoir récupérer l'image (elle est privée).

Cet article est un guide pratique qui explique comment faire.

Deux articles jumeaux sur la même CI : GitLab - Utiliser une clé SSH pour se connecter à un repo privé pour les repositories git privés, et GitLab - Exécuter Docker-out-of-Docker dans votre CI si votre job doit exécuter des commandes docker.

Voici le résultat une fois le token et les variables en place : le job s'authentifie et récupère l'image privée au lieu d'échouer avec denied: requested access to the resource is denied.

Pourquoi ça fonctionne​

  • Le token Docker Hub a une portée Read-Only : même s'il fuitait, il ne permettrait que de récupérer des images — jamais d'en pousser ni de modifier quoi que ce soit sur votre compte.
  • Le nom d'utilisateur et le token vivent en tant que variables CI/CD cachées et protégées, jamais dans le .gitlab-ci.yml lui-même — GitLab ne les affichera même pas si vous activez le mode debug complet.

Créer un token​

Vous devez d'abord créer un token. Rendez-vous sur cette page : https://app.docker.com/settings/personal-access-tokens. Vous devrez vous connecter, bien entendu.

Cliquez sur le bouton Generate new token et créez-en un nouveau. Veillez à bien spécifier la portée. Pour pouvoir accéder aux images privées, vous devez choisir Read-Only et pas Public Repo Read-Only (parce que ce dernier ne donne pas accès aux images privées).

Une fois créé, Docker affiche un petit écran d'aide où vous lirez que vous pouvez vous connecter à Docker en utilisant le token comme s'il s'agissait de votre mot de passe.

Créer deux variables CI/CD dans la page de votre repository​

Dans la page des paramètres CI/CD de GitLab, ajoutez deux nouvelles variables :

  • La première s'appellera DOCKER_HUB_USERNAME. La valeur à saisir ici est le nom de votre compte Docker (comme christophe ou my_company si l'image est stockée dans un compte d'entreprise) et
  • la seconde s'appellera DOCKER_HUB_TOKEN_RO. La valeur à saisir ici est le token que vous avez reçu.

Assurez-vous que les variables sont cachées et protégées. Cela empêchera GitLab d'afficher la valeur dans une sortie quelconque, par exemple quand vous activez CI_DEBUG_TRACE=true (doc) pour le debug complet.

Les deux variables ont été créées

Remarque

Vous pouvez ajouter les variables dans la page des paramètres CI/CD de votre repository ou à un niveau supérieur, comme au niveau du groupe ou au niveau de l'instance (il faut être admin pour ça).

Votre fichier gitlab-ci.yml​

Une fois cela fait, voici comment se connecter à Docker dans votre fichier .gitlab-ci.yml :

demo:
image: docker:latest
before_script:
- | # Do a secure login
echo "$DOCKER_HUB_TOKEN_RO" | docker login -u "$DOCKER_HUB_USERNAME" --password-stdin
script:
- | # Download the image
docker pull your_private_image
# - | # Use it
# docker run [...] your_private_image [...]

Ce bloc de configuration YAML définit un job CI/CD nommé 'demo' qui utilise l'image Docker pour télécharger une image Docker privée. Avant d'exécuter le script principal, il se connecte d'abord à Docker Hub en utilisant des identifiants stockés en variables d'environnement, puis télécharge l'image spécifiée.

Conclusion​

Un token en lecture seule et deux variables CI/CD protégées et masquées suffisent pour récupérer une image Docker Hub privée dans votre pipeline, sans jamais committer le moindre identifiant dans votre repo. Voyez GitLab - Utiliser une clé SSH pour se connecter à un repo privé pour le même problème appliqué à un repository git privé plutôt qu'à une image privée.


🦋 Rejoignez la conversation sur BlueskyUn compte Bluesky gratuit est nécessaire pour aimer, repartager ou commenter. Ce bloc interroge l'API publique de Bluesky directement depuis votre navigateur (sans cookie, sans connexion) — votre adresse IP parvient donc aux serveurs de Bluesky dès que cette section se charge.

Chargement des commentaires…

Cet article vous a-t-il été utile ?
Avez-vous suivi les étapes de cet article ?