Sobes.tech
Intern
19

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

Companies where asked
Т-БанкТ-Банк

Answer from AI

sobes.tech AI

В 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 задаёт её параметры по умолчанию.