Dockerfile a un paramètre pour POINT D'ENTRÉE et lors de l'écriture du fichier YAML de déploiement de Kubernetes, il y a un paramètre dans Container spec pour COMMAND .
Je ne suis pas en mesure de comprendre quelle est la différence et comment chacun est utilisé?
Kubernetes nous offre plusieurs options sur la façon d'utiliser ces commandes:
Lorsque vous remplacez le Entrypoint et le Cmd par défaut dans le fichier .yaml Kubernetes, ces règles s'appliquent:
Voici un exemple:
Dockerfile:
FROM Alpine:latest
COPY "executable_file" /
ENTRYPOINT [ "./executable_file" ]
Fichier Kubernetes yaml:
spec:
containers:
- name: container_name
image: image_name
args: ["arg1", "arg2", "arg3"]
https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/
La principale différence est la terminologie. Kubernetes pensait que les termes utilisés par Docker pour définir l'interface avec un conteneur étaient maladroits, et ils ont donc utilisé différents termes qui se chevauchaient . Étant donné que la grande majorité des conteneurs orchestrés par Kubernetes sont Docker, la confusion règne.
Plus précisément, les points d'entrée docker sont des commandes kubernetes et les commandes docker sont des arguments kubernetes, comme indiqué ici: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/# notes .
-------------------------------------------------------------------------------------
| Description | Docker field name | Kubernetes field name |
-------------------------------------------------------------------------------------
| The command run by the container | Entrypoint | command |
| The arguments passed to the command | Cmd | args |
-------------------------------------------------------------------------------------
La description de @ Berk sur la façon dont Kubernetes utilise ces options d'exécution est correcte, mais elle est également correcte sur la façon dont Docker Run les utilise, tant que vous traduisez les termes. La clé est de comprendre l'interaction entre l'image et les spécifications d'exécution dans l'un ou l'autre système, et de traduire les termes chaque fois que l'on parle de l'autre.