La différence entre RUN et CMD avec Docker
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
RUNsert à 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
CMDsert à 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 :
RUNmodifie l’imageCMDdé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 :
RUN npm installinstalle les dépendances dans l’imageCMD ["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 :
CMDest ignoré- la commande
echo "Hello"est exécutée
CMDest 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
RUNpour construire votre environnement (exécuté pendant le build) - utilisez
CMDpour lancer votre application (exécuté au runtime)
Si vous les confondez, votre conteneur ne fera probablement pas ce que vous attendez.
Pas de spam. Uniquement du contenu gratuit, des news et toujours plus de ressources pour monter en compétences !
Rejoignez +1500 développeurs
Aucun commentaire pour l'instant