DevOpsFacile
AccueilParcours de formationCertificationsModulesCheat SheetÀ Propos
DevOpsFacile

Une plateforme d'apprentissage complète pour maîtriser les pratiques DevOps modernes, du débutant à l'expert.

contact@devopsfacile.fr

Formation

  • Parcours de formation
  • Modules

Informations

  • À Propos
  • Conditions d'utilisation
  • Confidentialité
  • Mentions légales

© 2026 DevOps Facile. Tous droits réservés.

Fait avec pour la communauté DevOps

ModulesCréer son premier pipeline CI/CD avec GitLab CI05 - Utiliser Docker dans un pipeline GitLab CI

Détails

  • 20 minutes
  • Débutant

Objectifs

  • Configurer Docker-in-Docker (DinD) dans GitLab CI
  • Utiliser l'image docker:26 avec le service docker:26-dind
  • Comprendre DOCKER_TLS_CERTDIR
  • Construire une image Docker dans un pipeline
  • Lister les images avec docker images
Module Créer son premier pipeline CI/CD avec GitLab CI

Exercice 05 : Utiliser Docker dans un pipeline GitLab CI

🎯 Objectifs

À la fin de cet exercice, vous serez capable de :

  • ✅ Configurer Docker-in-Docker (DinD) avec image: docker:26 et services: docker:26-dind
  • ✅ Comprendre le rôle de DOCKER_TLS_CERTDIR
  • ✅ Construire une image Docker avec docker build dans un job GitLab CI
  • ✅ Vérifier la présence de l'image avec docker images

Durée estimée : 20 minutes

Difficulté : ⭐⭐☆☆☆ (Débutant)

Prérequis :

  • Exercices 01 à 04 complétés
  • Notions de base Docker (Dockerfile, docker build)

📖 Contexte

Pour construire des images Docker dans un pipeline GitLab CI, vous avez besoin de Docker-in-Docker (DinD) : un daemon Docker qui tourne à l'intérieur d'un conteneur. GitLab gère cela via les services:, qui sont des conteneurs qui tournent en parallèle du job et sont accessibles via un alias réseau.


📋 Énoncé

Créez un Dockerfile pour une application Node.js simple, puis un pipeline GitLab CI qui construit l'image en utilisant Docker-in-Docker et vérifie que l'image est bien présente.


🧭 Déroulement de l'exercice

Tâche 1 : Créer un Dockerfile simple

À la racine du projet, créez un Dockerfile basé sur node:20-alpine qui copie un fichier app.js et l'expose sur le port 3000.

Indice :

`dockerfile

FROM node:20-alpine

WORKDIR /app

COPY app.js .

EXPOSE 3000

CMD ["node", "app.js"]

`

Créez aussi app.js avec console.log("Hello from Docker!");.

Vérification : docker build . fonctionne en local (si Docker est installé).


Tâche 2 : Configurer Docker-in-Docker dans le pipeline

Dans .gitlab-ci.yml, créez un job build-image avec image: docker:26 et services: docker:26-dind. Ajoutez la variable DOCKER_TLS_CERTDIR: "/certs".

Indice :

`yaml

build-image:

image: docker:26

services:

- docker:26-dind

variables:

DOCKER_TLS_CERTDIR: "/certs"

`

DOCKER_TLS_CERTDIR active TLS entre le client Docker (votre job) et le daemon DinD (le service). C'est requis pour la sécurité sur les runners partagés GitLab.com.

Vérification : Le job démarre sans erreur de connexion au daemon Docker.


Tâche 3 : Vérifier que le daemon Docker est disponible

Avant de construire, ajoutez dans le script: du job une commande qui vérifie que Docker fonctionne correctement en affichant la version du client et du serveur.

Indice : docker info affiche les informations détaillées du daemon. docker version affiche les versions client et serveur séparément.

Vérification : Les logs affichent la version du Docker Engine (serveur) depuis le service DinD.


Tâche 4 : Construire l'image avec un tag

Dans le script du job build-image, construisez l'image avec docker build en la taguant avec $CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA.

Indice :

`bash

docker build -t $CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA .

`

Le . à la fin indique le contexte de build (le répertoire courant). Le tag combine le nom du projet et le SHA court du commit.

Vérification : La commande docker build se termine avec "Successfully built" dans les logs.


Tâche 5 : Lister les images construites

Après le build, ajoutez docker images dans le script pour lister toutes les images disponibles dans l'environnement DinD.

Indice : docker images (ou docker image ls) affiche le REPOSITORY, le TAG, l'IMAGE ID, la date de création et la taille. L'image que vous venez de construire doit apparaître avec votre tag.

Vérification : docker images liste l'image avec le nom $CI_PROJECT_NAME et le tag correspondant au SHA du commit.


🗂️ Mini-Projet : Image Docker construite dans CI

Checkpoints de validation :

  • Le Dockerfile est présent à la racine du dépôt
  • DOCKER_TLS_CERTDIR: "/certs" est configuré dans le job
  • docker version affiche les versions client ET serveur dans les logs
  • L'image est taguée $CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA
  • docker images liste l'image construite

Retour au module

Sur cette page

  • 🎯 Objectifs
  • 📖 Contexte
  • 📋 Énoncé
  • 🧭 Déroulement de l'exercice
  • Tâche 1 : Créer un Dockerfile simple
  • Tâche 2 : Configurer Docker-in-Docker dans le pipeline
  • Tâche 3 : Vérifier que le daemon Docker est disponible
  • Tâche 4 : Construire l'image avec un tag
  • Tâche 5 : Lister les images construites
  • 🗂️ Mini-Projet : Image Docker construite dans CI