2787 votes

Quelle est la différence entre CMD et ENTRYPOINT dans un Dockerfile ?

Dans Dockerfiles, il y a deux commandes qui me semblent similaires : CMD et ENTRYPOINT . Mais je suppose qu'il y a une différence (subtile ?) entre les deux, sinon cela n'aurait aucun sens d'avoir deux commandes pour la même chose.

La documentation indique que pour CMD

L'objectif principal d'un CMD est de fournir des valeurs par défaut pour un conteneur en cours d'exécution.

et pour ENTRYPOINT :

Un ENTRYPOINT vous aide à configurer un conteneur que vous pouvez exécuter comme un exécutable.

Alors, quelle est la différence entre ces deux commandes ?

2 votes

^ que ! Merci @slm . Voici une autre référence très similaire qui pourrait être un peu plus à jour : docs.docker.com/reference/builder/#entrypoint

84 votes

Aussi déroutant que la différence entre ADD et COPY

5 votes

Ce lien fournit la différence entre RUN, CMD, et ENTRYPOINT : goinbigdata.com/docker-run-vs-cmd-vs-entrypoint

2voto

Thuan Tran Points 51

- Un Dockerfile doit spécifier au moins une instruction CMD ou ENTRYPOINT.

- Seuls les derniers CMD et ENTRYPOINT dans un Dockerfile seront utilisés.

- ENTRYPOINT doit être défini lorsque le conteneur est utilisé comme un exécutable.

- Vous devez utiliser l'instruction CMD comme moyen de définir des arguments par défaut pour la commande définie comme ENTRYPOINT ou pour exécuter une commande ad-hoc dans un conteneur

- CMD sera remplacé lors de l'exécution du conteneur avec des arguments alternatifs.

- ENTRYPOINT définit l'application concrète par défaut qui est utilisée chaque fois qu'un conteneur est créé en utilisant l'image

- Si vous couplez ENTRYPOINT avec CMD, vous pouvez supprimer un exécutable de CMD et juste laisser ses arguments qui seront passés à ENTRYPOINT

- La meilleure utilisation de ENTRYPOINT est de définir la commande principale de l'image, permettant à cette image d'être exécutée comme si elle était cette commande (et d'utiliser CMD comme valeur par défaut). l'image d'être exécutée comme si elle était cette commande (et d'utiliser CMD comme les par défaut)

1voto

anshul Points 96

CMD mentionnée à l'intérieur de Dockerfile peut être remplacé par le fichier docker run commande pendant que ENTRYPOINT ne peut pas l'être.

12 votes

docker run --help La commande dit le contraire : --entrypoint string Overwrite the default ENTRYPOINT of the image

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X