Glossaire · CI/CD et DevOps
Conteneur Docker
En anglais : Docker container
Également appelé : conteneurs Docker, image Docker, images Docker, Docker
Définition
Une instance isolée d’une image Docker qui embarque une application ou un service avec ses dépendances, pour un comportement identique en local et en CI.
Un conteneur Docker est un processus lancé à partir d’une image Docker et isolé du reste de la machine : il possède son propre système de fichiers, sa propre interface réseau et sa propre liste de processus, mais partage le noyau de l’hôte. L’image est le modèle en lecture seule (une couche de base du système d’exploitation, des runtimes, votre application) ; le conteneur en est une instance en cours d’exécution. Vous pouvez démarrer de nombreux conteneurs à partir d’une même image, et les jeter une fois terminé.
Exemple
Démarrer un nœud Selenium Chrome jetable et une base de données Postgres pour des exécutions de tests en local :
docker run --rm -d --name chrome -p 4444:4444 --shm-size=2g selenium/standalone-chrome:latest
docker run --rm -d --name db -p 5432:5432 -e POSTGRES_PASSWORD=test postgres:16-alpine
docker ps # list running containers
docker logs db # read a container's output
docker stop chrome db
--rm supprime le conteneur quand il s’arrête, -d l’exécute en arrière-plan et -p host:container publie un port (hôte:conteneur). Dans les vrais projets, on fige les tags d’image (par exemple postgres:16.4-alpine) au lieu de latest, pour qu’une nouvelle version publiée en amont ne modifie pas votre environnement de test du jour au lendemain.
Pourquoi les testeurs utilisent des conteneurs
- Des environnements reproductibles. La même image tourne sur chaque poste et chaque runner de CI, ce qui élimine toute une catégorie d’échecs du type « ça marche sur ma machine ».
- Des dépendances jetables. Une base de données neuve à chaque exécution signifie aucune donnée résiduelle de l’exécution de la veille.
- Des navigateurs en parallèle. Selenium Grid et les images de navigateurs permettent d’augmenter ou de réduire le nombre de nœuds en une commande.
- Exécuter la suite de tests elle-même. Playwright publie des images officielles avec les navigateurs et les bibliothèques système préinstallés, ce qui évite les erreurs de dépendances manquantes sur les agents de CI.
Différence avec une machine virtuelle
Une VM émule une machine complète avec son propre noyau : elle est donc plus lourde et plus lente à démarrer. Un conteneur partage le noyau de l’hôte, démarre en quelques secondes et consomme beaucoup moins de mémoire. La contrepartie est une isolation plus faible, ce qui compte pour les frontières de sécurité mais rarement pour les environnements de test.
Erreurs courantes
Stocker des données de test dans un conteneur en s’attendant à ce qu’elles survivent à un redémarrage (utilisez des volumes), utiliser des tags latest, et oublier --shm-size pour les conteneurs de navigateurs, ce qui fait planter Chrome sous charge.