Назад к вопросам
Junior
68
questionbank

Что такое entrypoint и cmd в контекстеDocker?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

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

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

Различия:

Особенность ENTRYPOINT CMD
Назначение Определяет основную команду для выполнения Предоставляет аргументы или команду по умолчанию
Переопределение Требует docker run --entrypoint Переопределяется аргументами docker run
Использование с ENTRYPOINT Аргументы для ENTRYPOINT Команда по умолчанию, если ENTRYPOINT нет

Примеры:

С использованием ENTRYPOINT и CMD:

# Dockerfile
FROM alpine:latest
ENTRYPOINT ["echo", "Hello"]
CMD ["World!"]

При запуске docker run ваше-имя-образа: Выполнится echo Hello World! При запуске docker run ваше-имя-образа Universe!: Выполнится echo Hello Universe!

Только с использованием CMD:

# Dockerfile
FROM alpine:latest
CMD ["echo", "Hello World!"]

При запуске docker run ваше-имя-образа: Выполнится echo Hello World! При запуске docker run ваше-имя-образа echo Hello Docker!: Переопределит CMD, выполнится echo Hello Docker!

Рекомендуется использовать ENTRYPOINT для исполняемого файла и CMD для передачи параметров по умолчанию этому исполняемому файлу.