Чем отличается CMD от ENTRYPOINT в Docker?

В Docker CMD и ENTRYPOINT задают команды, которые будут выполняться при запуске контейнера, но имеют разные цели и поведение:

Короткий ответ

Что ответить на собеседовании

В Docker CMD и ENTRYPOINT задают команды, которые будут выполняться при запуске контейнера, но имеют разные цели и поведение:

Подробный разбор

Ответ с пояснениями

В Docker CMD и ENTRYPOINT задают команды, которые будут выполняться при запуске контейнера, но имеют разные цели и поведение:

  • ENTRYPOINT задаёт основную команду контейнера, которая всегда будет выполняться. Она определяет, что именно контейнер делает.
  • CMD задаёт аргументы по умолчанию для ENTRYPOINT или команду, если ENTRYPOINT не задан.

Если в Dockerfile есть только CMD, то при запуске контейнера можно переопределить команду, указав другую в docker run. Если задан ENTRYPOINT, то команда из docker run будет передана как аргументы к ENTRYPOINT.

Пример:

ENTRYPOINT ["echo"]
CMD ["Hello, world!"]

Запуск docker run без аргументов выведет Hello, world!, а docker run <image> Bye выведет Bye.

Таким образом, ENTRYPOINT фиксирует основную команду, а CMD задаёт её параметры по умолчанию.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее