Docker pour les développeurs : images, conteneurs et Compose

DevOps2026-10-10TryQuickToolBox

Vous êtes développeur et vous avez entendu parler de Docker. Peut-être l'avez-vous essayé, mais les concepts d'images, de conteneurs et de Compose restent flous. Ou vous en avez assez du « ça marche sur ma machine » et vous voulez un environnement cohérent. Ce guide va droit au but et vous donne une compréhension pratique des éléments essentiels de Docker et de leur utilisation efficace.

Pourquoi Docker pour les développeurs ?

Docker résout l'incohérence des environnements. Au lieu d'installer les dépendances directement sur votre machine, vous empaquetez votre application et ses dépendances dans un conteneur. Les conteneurs s'exécutent de la même manière partout : sur votre portable, celui de votre collègue et en production. Cela élimine les dérives de configuration et rend l'intégration triviale.

Les images : le plan de construction

Une image est un modèle en lecture seule. Elle contient le code de votre application, le runtime, les bibliothèques et les variables d'environnement. Vous construisez des images à partir d'un Dockerfile, un fichier texte contenant des instructions.

Voici un Dockerfile simple pour une application Node.js :

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

Chaque instruction crée une couche. Les couches sont mises en cache, donc les reconstructions sont rapides lorsque seul le code change. Les images sont stockées dans des registres comme Docker Hub ou un registre privé.

Les conteneurs : l'instance en cours d'exécution

Un conteneur est une instance exécutable d'une image. Il est isolé mais partage le noyau de l'OS hôte, ce qui le rend léger. Vous démarrez un conteneur avec docker run.

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

Cela mappe le port 3000 de l'hôte vers le port 3000 du conteneur et l'exécute en mode détaché. Les conteneurs sont éphémères : les modifications sont perdues lors de leur suppression, sauf si vous utilisez des volumes.

Commandes clés :

Docker Compose : applications multi-conteneurs

Les applications réelles ont souvent besoin de plusieurs services : un serveur web, une base de données, un cache. Docker Compose vous permet de définir et d'exécuter des applications multi-conteneurs avec un seul fichier YAML.

Voici un docker-compose.yml pour une application Node.js avec PostgreSQL :

version: '3.8'
services:
  web:
    build: .
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=postgres://user:pass@db:5432/mydb
    depends_on:
      - db
  db:
    image: postgres:15
    environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=pass
      - POSTGRES_DB=mydb
    volumes:
      - pgdata:/var/lib/postgresql/data
volumes:
  pgdata:

Exécutez docker compose up pour démarrer les deux services. Compose gère la mise en réseau, donc web peut joindre db par le nom du service.

Quand utiliser Docker Compose ou Docker seul

ScénarioUtilisation
Conteneur uniquedocker run
Services multiples (app + DB)Docker Compose
Orchestration en productionKubernetes, Swarm

Bonnes pratiques pour les développeurs

Pièges courants

Conflits de ports : si le port 3000 est occupé, mappez vers un autre port hôte : -p 3001:3000.

Perte de données : sans volumes, les données de la base de données disparaissent lorsque le conteneur est supprimé.

Builds lents : ordonnez les instructions du Dockerfile du moins au plus fréquemment modifié pour tirer parti du cache.

FAQ

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

Une image est un modèle en lecture seule ; un conteneur est une instance en cours d'exécution de cette image. Vous pouvez exécuter plusieurs conteneurs à partir de la même image.

Ai-je besoin de Docker Compose pour un seul service ?

Non. Compose brille lorsque vous avez plusieurs services. Pour un conteneur unique, docker run est plus simple.

Comment persister les données dans Docker ?

Utilisez des volumes. Définissez un volume nommé dans Compose ou utilisez -v avec docker run pour monter un répertoire hôte ou un volume nommé.

Prêt à fluidifier votre flux de travail Docker ? Découvrez notre JSON Formatter pour valider et formater rapidement des fichiers de configuration JSON comme docker-compose.yml ou package.json.