La différence entre RUN et CMD avec Docker

NicolasBrondinBernard

Auteur
@NicolasBrondinBernard

Découvrez la différence entre RUN et CMD dans Docker, leur rôle dans un Dockerfile et comment éviter les erreurs courantes.

Article publié le 31/03/2026, dernière mise à jour le 31/03/2026

Quand vous écrivez votre premier Dockerfile, les instructions RUN et CMD qui prêtent souvent à confusion.

Elles peuvent sembler similaires… mais elles n’ont absolument pas le même rôle.

À noter que si vous ne connaissez pas Docker, cet article ne vous sera pas très utile, mais vous pouvez toujours aller écouter notre introduction à Docker dans un épisode dédié du podcast !

La commande RUN

RUN est utilisé lors de la construction de l’image Docker.

Par exemple :

RUN apt-get update && apt-get install -y curl

Cette commande est exécutée :

  • pendant le docker build
  • pour modifier l’image

RUN sert à préparer l’image.

Chaque instruction RUN crée une nouvelle couche dans l’image Docker.

Typiquement, vous utilisez RUN pour :

  • installer des dépendances
  • copier ou générer des fichiers
  • configurer l’environnement

La commande CMD

CMD est utilisée lors du lancement du conteneur.

Par exemple :

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

Cette commande est exécutée :

  • quand vous faites docker run
  • au démarrage du conteneur

CMD sert à dire : “voilà ce que fait ce conteneur quand il démarre”.

La différence clé

La différence principale tient en une phrase : RUN s’exécute pendant le build tandis que CMD s’exécute au runtime.

Autrement dit :

  • RUN modifie l’image
  • CMD définit le comportement du conteneur

Un exemple concret

Prenons un Dockerfile simple :

FROM node:18
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .

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

Ce qu’il se passe :

  1. RUN npm install installe les dépendances dans l’image
  2. CMD ["node", "index.js"] lance l’application au démarrage

Sans CMD, le conteneur ne ferait rien.

Pour aller plus loin

CMD peut être remplacé

Par exemple :

docker run mon-image echo "Hello"

Ici :

  • CMD est ignoré
  • la commande echo "Hello" est exécutée

CMD est une valeur par défaut.

Le système de couches (layers)

Chaque RUN ajoute une couche à votre image.

Par exemple :

RUN apt-get update
RUN apt-get install -y curl

Crée deux couches.

Les différentes couches sont utilisées par Docker pour optimiser la mémoire utilisée par les images, car les couches similaires sont partagées entre les différents conteneurs !

Résumé de l'article

RUN et CMD sont complémentaires.

  • utilisez RUN pour construire votre environnement (exécuté pendant le build)
  • utilisez CMD pour lancer votre application (exécuté au runtime)

Si vous les confondez, votre conteneur ne fera probablement pas ce que vous attendez.


Vous avez terminé l'article ?
Notre newsletter

Pas de spam. Uniquement du contenu gratuit, des news et toujours plus de ressources pour monter en compétences !

Rejoignez +1500 développeurs

Commentaires (0)

pour laisser un commentaire

Aucun commentaire pour l'instant

Questions fréquentes abordées dans l'article

docker run vs cmd différence dockerfile run vs cmd docker run instruction explication docker cmd instruction dockerfile comprendre run cmd docker build vs run différence dockerfile erreurs fréquentes docker run command vs cmd