Différence entre COURIR et CMD dans un Dockerfile
Je suis confus au sujet de quand dois-je utiliser CMD
vs RUN
. Par exemple, pour exécuter bash/shell de commandes (c'est à dire ls -la
) je serais toujours utiliser CMD
ou est-il une situation où je voudrais utiliser RUN
? En essayant de comprendre les meilleures pratiques au sujet de ces deux Dockerfile
directives.
Vous devez vous connecter pour publier un commentaire.
EXÉCUTER est une image de l'étape de génération, l'état du conteneur après un
RUN
commande sera engagé pour le conteneur de l'image. Un Dockerfile peut avoir de nombreusesRUN
étapes que la couche au-dessus de l'autre pour construire l'image.CMD est la commande le conteneur s'exécute par défaut lorsque vous lancez le construit de l'image. Un Dockerfile ne peut avoir qu'un
CMD
. LeCMD
peut être remplacé lors du démarrage d'un conteneur avecdocker run $image $other_command
.Point d'entrée est aussi étroitement lié à
CMD
et peuvent modifier la façon dont un conteneur commence une image.RUN
nécessaires à la configuration de votre environnement et de votre (seulement) CMD lance le processus en cours d'exécution dans votre conteneur, par exemple, pour nginx, extrait de github.com/nginxinc/docker-nginx/blob/... vous voyez la ligneCMD ["nginx", "-g", "daemon off;"]
RUN
- commande déclenche pendant que nous construisons l'image docker.CMD
- commande déclenche alors que nous lançons le créé le panneau de l'image.J'ai trouvé cette article très utile pour comprendre la différence entre eux:
EXÉCUTER -
EXÉCUTEZ l'instruction permet d'installer votre application et les paquets
requise pour cela. Il exécute toutes les commandes sur le haut de l'image
et crée un nouveau calque par commettre les résultats. Souvent, vous trouverez
plusieurs EXÉCUTER des instructions dans un Dockerfile.
CMD -
CMD instruction permet de définir une valeur par défaut de la commande, qui sera
exécuté uniquement lorsque vous exécutez conteneur sans spécification d'une commande.
Si Docker conteneur s'exécute avec une commande, la commande par défaut sera
ignoré. Si Dockerfile a plus d'un CMD instruction, toutes les mais la dernière
CMD instructions sont ignorées.
EXÉCUTER - Installer Python , votre conteneur a maintenant python brûlé dans son image
CMD - python hello.py , exécuter votre favori script
de docker fichier de référence
https://docs.docker.com/engine/reference/builder/#cmd
EXÉCUTER la Commande:
EXÉCUTER la commande sera fondamentalement, exécutez la commande par défaut, lorsque nous sommes à la construction de l'image. Il sera également engager les modifications de l'image pour la prochaine étape.
Il peut y avoir plus de 1 EXÉCUTER la commande, à l'aide dans le processus de construction d'une nouvelle image.
Commande CMD:
CMD commandes il suffit de régler la commande par défaut pour le nouveau conteneur. Ce ne sera pas exécuté au moment de la construction.
Si un docker fichier contient plus de 1 commandes CMD puis tous d'entre eux sont ignorés, sauf le dernier. Cette commande ne sera pas exécuter quoi que ce soit, mais il suffit de régler la commande par défaut.
Il y a eu assez de réponses sur EXÉCUTER et CMD. Je veux juste ajouter quelques mots sur point d'entrée. CMD arguments peuvent être remplacées par des arguments de ligne de commande, alors que point d'entrée arguments sont toujours utilisés.
Cet article est une bonne source d'information.