Какие основные инструкции Dockerfile используются чаще всего? Чем отличаются ENTRYPOINT и CMD?

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

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

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

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

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

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

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

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

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

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

Подробнее