Sobes.tech
Back to questions
Junior — Middle
71

Чем отличаются команды CMD и ENTRYPOINT в Dockerfile и как их правильно использовать?

Answer from AI

sobes.tech AI

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

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

Правильное использование:

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

Пример:

ENTRYPOINT ["python3"]
CMD ["app.py"]

При запуске docker run image выполнится python3 app.py, а при docker run image script.pypython3 script.py.