Docker pour développeurs : images, conteneurs et Compose

DevOps2026-10-01TryQuickToolBox

En tant que développeur, vous avez probablement été confronté à la frustration des incohérences d'environnement : « Ça marche sur ma machine ! » Docker résout ce problème en empaquetant les applications dans des conteneurs. Ce guide explique les images Docker, les conteneurs et Compose pour vous aider à construire, livrer et exécuter des applications de manière cohérente.

Qu'est-ce que Docker ?

Docker est une plateforme pour développer, livrer et exécuter des applications dans des conteneurs. Les conteneurs sont des paquets légers, autonomes et exécutables qui incluent tout ce qui est nécessaire pour exécuter un logiciel : code, runtime, outils système, bibliothèques et paramètres.

Images vs conteneurs

Une image est un modèle en lecture seule avec des instructions pour créer un conteneur. Un conteneur est une instance exécutable d'une image. Vous pouvez créer plusieurs conteneurs à partir de la même image, chacun isolé des autres.

Travailler avec les images

Les images sont construites à partir d'un Dockerfile, un fichier texte contenant des instructions. Voici un exemple simple avec Node.js :

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]

Construisez l'image avec :

docker build -t my-app .

Lister les images : docker images

Exécuter des conteneurs

Démarrez un conteneur à partir d'une image :

docker run -d -p 3000:3000 --name my-container my-app

Cela exécute le conteneur en mode détaché (-d), mappe le port 3000 et le nomme my-container.

Lister les conteneurs en cours d'exécution : docker ps

Arrêter un conteneur : docker stop my-container

Supprimer un conteneur : docker rm my-container

Pourquoi utiliser Docker Compose ?

Lorsque votre application dépend de plusieurs services (base de données, cache, etc.), gérer des conteneurs individuels devient fastidieux. Docker Compose vous permet de définir et d'exécuter des applications multi-conteneurs à l'aide d'un fichier YAML.

Exemple de fichier Compose

Créez docker-compose.yml :

version: '3.8'
services:
  web:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db
  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: example
    volumes:
      - postgres_data:/var/lib/postgresql/data
volumes:
  postgres_data:

Démarrez tous les services : docker compose up -d

Arrêter et supprimer : docker compose down

Bonnes pratiques pour les développeurs

Aide-mémoire des commandes courantes

CommandeDescription
docker build -t name .Construire une image à partir du Dockerfile
docker run -p host:container imageExécuter un conteneur et mapper les ports
docker ps -aLister tous les conteneurs
docker exec -it container bashOuvrir un shell dans un conteneur en cours d'exécution
docker compose upDémarrer les services définis dans le fichier Compose
docker compose logs -fSuivre les logs de tous les services

FAQ

Quelle est la différence entre une image et un conteneur ?

Une image est un modèle statique ; un conteneur est une instance en cours d'exécution de cette image. Vous pouvez créer plusieurs conteneurs à partir d'une seule image.

Quand dois-je utiliser Docker Compose ?

Utilisez Compose lorsque votre application nécessite plusieurs services (par exemple, serveur web, base de données, cache) qui doivent s'exécuter ensemble. Cela simplifie l'orchestration pour le développement et les tests.

Comment persister des données dans Docker ?

Utilisez des volumes ou des bind mounts. Les volumes sont gérés par Docker et stockés dans une zone dédiée ; les bind mounts pointent vers un répertoire de l'hôte. Les deux survivent aux redémarrages des conteneurs.

Prêt à simplifier votre flux de travail Docker ? Essayez notre Analyseur de logs Nginx pour déboguer rapidement les logs de vos conteneurs.