Что будет, если использовать CMD и ENTRYPOINT одновременно

«Что будет, если использовать CMD и ENTRYPOINT одновременно» — вопрос из категории Docker, который задают на 24% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

При одновременном использовании CMD и ENTRYPOINT в Dockerfile, CMD становится аргументами для команды, указанной в ENTRYPOINT. Если ENTRYPOINT задан как exec-форма (["executable", "param1"]), то CMD добавляет параметры. Если ENTRYPOINT не указан, CMD определяет команду для запуска.

Пример:

ENTRYPOINT ["echo", "Hello"]
CMD ["World"]

При запуске контейнера без аргументов выведет: Hello World. Если передать аргументы (docker run <image> John), выведет: Hello John (CMD игнорируется).