Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Docker: Docker, CMD, ENTRYPOINT, Dockerfile, container

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

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

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

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

Длинный ответ

Разница между CMD и ENTRYPOINT в Docker

В Dockerfile инструкции CMD и ENTRYPOINT определяют, что будет выполняться при запуске контейнера. Однако их поведение различается: CMD задает команду по умолчанию, которую можно легко переопределить, а ENTRYPOINT фиксирует исполняемый файл, который всегда запускается.

Как это работает

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

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

При запуске docker run image выведется "Hello World", но docker run image ls выполнит ls вместо echo.

ENTRYPOINT определяет основную программу, которая всегда выполняется. Аргументы, переданные при запуске, добавляются к ней. Пример:

FROM ubuntu
ENTRYPOINT ["echo"]
CMD ["Hello World"]

Теперь docker run image выведет "Hello World", а docker run image Hi — "Hi". CMD здесь служит аргументами по умолчанию.

Комбинированное использование

Часто ENTRYPOINT задает утилиту, а CMD — её параметры. Это удобно для создания образов-обёрток. Например, для базы данных:

ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["postgres"]

При запуске контейнера выполняется скрипт, который инициализирует БД и запускает PostgreSQL.

Вывод

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

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • Docker

    Docker

Ключевые слова

#Docker

#CMD

#ENTRYPOINT

#Dockerfile

#container

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.