Назад к вопросам
Middle
103
questionbank

В чем различие между CMD и ENTRYPOINT в Dockerfile?

Sobes Copilot

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

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

sobes.tech AI

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

Примеры:

Dockerfile с CMD:

FROM ubuntu
CMD ["echo", "Hello from CMD"]

Запуск:

docker run <image>
# Output: Hello from CMD

docker run <image> echo "Hello from overridden CMD"
# Output: Hello from overridden CMD

Dockerfile с ENTRYPOINT:

FROM ubuntu
ENTRYPOINT ["echo"]

Запуск:

docker run <image>
# Output:

docker run <image> "Hello from ENTRYPOINT"
# Output: Hello from ENTRYPOINT

Dockerfile с ENTRPOINT и CMD:

FROM ubuntu
ENTRYPOINT ["echo"]
CMD ["Default message"]

Запуск:

docker run <image>
# Output: Default message

docker run <image> "Custom message"
# Output: Custom message

Сводная таблица:

Особенность CMD ENTRYPOINT
Назначение Команда или аргументы по умолчанию Базовая команда для выполнения
Переопределение Легко переопределяется при запуске Не так легко переопределяется, скорее дополняется аргументами
Использование с ENTRYPOINT Предоставляет стандартные аргументы Определяет команду, к которой добавляются аргументы из CMD или запуска
Форматы Executable form, Shell form Executable form, Shell form