Продвинутый
В чем разница между инструкциями CMD и ENTRYPOINT в Dockerfile?
Обе инструкции указывают, какую команду выполнить при старте контейнера, но ведут себя по-разному:
ENTRYPOINT:
Задает основную команду, которая не может быть переопределена при запуске контейнера (если не использовать спец. флаг). Контейнер работает как исполняемый файл.
Пример: ENTRYPOINT["nginx", "-g", "daemon off;"]
CMD:
Задает команду по умолчанию или аргументы для ENTRYPOINT. Эту команду легко переопределить, передав аргументы в docker run.
Пример: CMD ["--help"]
💡 Практика: Часто их комбинируют. ENTRYPOINT задает саму программу, а CMD — дефолтные параметры к ней.