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.
Traduction automatique
Cet article a plus d'un an, mais il a été relu le 30 juillet 2026 — son contenu est toujours exact.

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.ymllui-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 (commechristopheoumy_companysi 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.
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.
Chargement des commentaires…

