Remplacement des relations de priorité : instructions ENTRYPOINT et CMD dans Dockerfile et docker run

Les directives ENTRYPOINT et CMD dans le Dockerfile définissent la commande de démarrage par défaut pour le conteneur. Cependant, ces directives peuvent être remplacées par les arguments de ligne de commande d'exécution de Docker lors de l'exécution du conteneur.

La relation de priorité prioritaire est la suivante :

  1. Si --entrypointl'option , elle remplacera la commande ENTRYPOINT spécifiée dans le Dockerfile.
  2. Si un argument de ligne de commande est spécifié lors de l'exécution du conteneur, il remplacera la commande CMD spécifiée dans le Dockerfile.
  3. Si la commande ENTRYPOINT est spécifiée dans le Dockerfile mais pas dans la commande CMD, les arguments de la ligne de commande deviendront la commande CMD lors de l'exécution du conteneur.
  4. Si ni la commande ENTRYPOINT ni la commande CMD ne sont spécifiées dans le Dockerfile, lors de l'exécution du conteneur, les paramètres de la ligne de commande seront considérés comme une commande complète et exécutés directement.

Par exemple, supposons que vous ayez le Dockerfile suivant :

FROM ubuntu

ENTRYPOINT ["/bin/echo", "Hello,"]

CMD ["world!"]

Le Dockerfile définit un conteneur basé sur Ubuntu, avec "/bin/echo"et "Hello,"comme commandes ENTRYPOINT et "world!"comme commandes CMD.

Si vous exécutez le conteneur sans spécifier de paramètres, les commandes par défaut ENTRYPOINT et CMD seront exécutées avec le résultat suivant :

$ docker run myimage

Hello, world!

Les commandes CMD seront remplacées si des arguments de ligne de commande sont spécifiés lors de l'exécution du conteneur, par exemple :

$ docker run myimage "GPT-3"

La sortie deviendra :

Hello, GPT-3!

Si vous spécifiez une nouvelle commande avec --entrypointl'option , elle remplacera la commande ENTRYPOINT, par exemple :

$ docker run --entrypoint /bin/ls myimage /

La sortie sera une liste de fichiers à la racine du conteneur.

Il convient de noter que si les commandes ENTRYPOINT et CMD sont spécifiées dans le Dockerfile, la commande CMD peut être remplacée par les paramètres de ligne de commande lors de l'exécution du conteneur, mais la commande ENTRYPOINT ne peut pas être remplacée à moins qu'une nouvelle commande ENTRYPOINT ne soit spécifiée à l'aide --entrypointde l'option

Je suppose que tu aimes

Origine blog.csdn.net/kingu_crimson/article/details/129929858
conseillé
Classement