В Dockerfile есть параметр для ENTRYPOINT, и во время записи YAML файла развертывания Kubernetes в спецификации контейнера есть параметр для COMMAND.
Я не могу понять, в чем разница и как каждый используется?
В Dockerfile есть параметр для ENTRYPOINT, и во время записи YAML файла развертывания Kubernetes в спецификации контейнера есть параметр для COMMAND.
Я не могу понять, в чем разница и как каждый используется?
Kubernetes предоставляет нам множество опций о том, как использовать эти команды:
Когда вы переопределяете файл Entrypoint и Cmd в файле Kubernetes.yaml, применяются следующие правила:
Вот пример:
Dockerfile:
FROM alpine:latest
COPY "executable_file" /
ENTRYPOINT [ "./executable_file" ]
Файл 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/
Ключевое отличие заключается в терминологии. Кубернетес считал, что термины, которые Docker использовал для определения интерфейса с контейнером, были неуклюжими, и поэтому они использовали разные перекрывающиеся термины. Поскольку подавляющее большинство контейнеров оркестров Kubernetes являются Docker, путаница изобилует.
В частности, точки входа в docker - это команды kubernetes, а команды docker - в качестве аргументов kubernetes, как указано здесь: 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 |
-------------------------------------------------------------------------------------
@Справочное описание того, как Kubernetes использует эти параметры времени выполнения, является правильным, но оно также корректно и то, как Docker Run использует их, если вы переводите термины. Ключ заключается в том, чтобы понять взаимодействие между образом и спецификациями прогонов в любой системе, а также переводить термины всякий раз, когда говорят о другой.