Nous allons voir dans cet article la différence entre les deux directives Docker ENTRYPOINT et CMD. Les deux sont utilisées pour exécuter une commande dans l’instance de l’image, mais avec une petite différence.
CMD peut transmettre les paramètres par défaut à ENTRYPOINT si les deux sont définis.
CMD
FROM node:8.11-slim
CMD ["node", "--version"]
docker build -t cmd
Nous allons instancier cette image pour l’exemple. C’est une image avec seulement une commande exécutée :
docker exécuter -it cmd
//output
v8.11.4
docker exécuter -it cmd npm --version
//output
5.6.0
ENTRYPOINT
FROM node:8.11-slim
ENTRYPOINT ["node", "--version"]
Nous allons instancier le même type d’image, mais avec un ENTRYPOINT :
docker build -t entrypoint
Maintenant, nous allons exécuter les mêmes commandes :
docker run -it entrypoint
//output
v8.11.4
docker run -it entrypoint npm --version
//output
v8.11.4
Conclusion
Si la commande lancée par le container Docker peut changer, utilisez CMD et dans le cas contraire, utilisez ENTRYPOINT.
Pour aller plus loin vous pouvez lire les articles suivant