Docker pour développeurs : images, conteneurs et Compose

DevOps2026-09-11TryQuickToolBox

Vous avez probablement entendu parler de Docker et de la façon dont il peut simplifier votre workflow de développement. Mais si vous débutez avec les conteneurs, la terminologie et les commandes peuvent sembler décourageantes. Ce guide va droit au but et vous donne une compréhension pratique des images Docker, des conteneurs et de Compose—pour que vous puissiez commencer à les utiliser efficacement dès aujourd'hui.

Qu'est-ce que Docker et pourquoi s'y intéresser ?

Docker est une plateforme qui empaquette votre application et ses dépendances dans une unité standardisée appelée conteneur. Les conteneurs sont légers, portables et isolés les uns des autres, ce qui signifie que vous pouvez exécuter votre application de manière cohérente sur votre ordinateur portable, la machine d'un collègue ou un serveur de production.

L'avantage principal ? « Ça marche sur ma machine » appartient au passé. Docker garantit que l'environnement dans lequel votre code s'exécute est identique partout.

Images vs conteneurs : les briques de base

Avant de commencer, vous devez comprendre la différence entre une image et un conteneur.

En bref : une image est la recette, et un conteneur est le plat que vous cuisinez à partir de celle-ci.

Commandes Docker essentielles pour les développeurs

Voici les commandes que vous utiliserez le plus souvent :

  1. docker pull <image> – Télécharger une image depuis un registre comme Docker Hub.
  2. docker images – Lister toutes les images locales.
  3. docker run <image> – Créer et démarrer un conteneur à partir d'une image.
  4. docker ps – Lister les conteneurs en cours d'exécution. Ajoutez -a pour voir tous les conteneurs, y compris ceux qui sont arrêtés.
  5. docker stop <container> – Arrêter proprement un conteneur en cours d'exécution.
  6. docker rm <container> – Supprimer un conteneur arrêté.
  7. docker rmi <image> – Supprimer une image.
  8. docker exec -it <container> bash – Ouvrir un shell interactif à l'intérieur d'un conteneur en cours d'exécution.

Par exemple, pour exécuter un simple serveur web Nginx :

docker run -d -p 8080:80 nginx

Cela télécharge l'image nginx (si elle n'est pas déjà présente), démarre un conteneur en mode détaché (-d), et mappe le port 8080 de votre hôte vers le port 80 du conteneur (-p 8080:80).

Construire votre propre image avec un Dockerfile

Pour empaqueter votre application, vous créez un Dockerfile—un fichier texte contenant des instructions. Voici un exemple simple pour une application Node.js :

# Utiliser un runtime Node.js officiel comme image parente
FROM node:18-alpine

# Définir le répertoire de travail
WORKDIR /usr/src/app

# Copier package.json et installer les dépendances
COPY package*.json ./
RUN npm install

# Copier le reste du code de l'application
COPY . .

# Exposer le port sur lequel l'application s'exécute
EXPOSE 3000

# Définir la commande pour exécuter l'application
CMD ["node", "app.js"]

Construisez l'image avec :

docker build -t my-node-app .

Puis exécutez-la :

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

Simplifier les applications multi-conteneurs avec Docker Compose

Les applications réelles ont souvent besoin de plusieurs services : un serveur web, une base de données, un cache, etc. Les gérer individuellement avec docker run devient fastidieux. Docker Compose vous permet de définir et d'exécuter des applications multi-conteneurs à l'aide d'un fichier YAML.

Créez un fichier 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:

Puis démarrez le tout avec :

docker compose up -d

Compose gère le réseau, les volumes et les dépendances pour vous. Pour arrêter et supprimer les conteneurs, réseaux et volumes, exécutez docker compose down.

Bonnes pratiques pour Docker en développement

Pièges courants et comment les éviter

FAQ

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

Une image est un modèle en lecture seule qui définit l'application et son environnement. Un conteneur est une instance en cours d'exécution de cette image. Vous pouvez créer de nombreux conteneurs à partir d'une seule image.

Ai-je besoin de Docker Compose pour une application mono-conteneur ?

Pas nécessairement. Pour les applications simples, docker run suffit. Cependant, Compose facilite la gestion des variables d'environnement, des volumes et du réseau, même pour un seul service, et simplifie la mise à l'échelle ultérieure.

Comment persister les données dans Docker ?

Utilisez des volumes. Les volumes sont stockés en dehors du système de fichiers du conteneur et persistent même si le conteneur est supprimé. Dans Compose, définissez un volume et montez-le sur un chemin dans le conteneur (par ex., volumes: - mydata:/var/lib/data).

Prêt à optimiser votre workflow Docker ? Lorsque vous devez analyser les logs de conteneurs, essayez notre Analyseur de logs Nginx pour parser et visualiser rapidement les données de logs—parfait pour déboguer des serveurs web conteneurisés.