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

Для чего используется CMD и ENTRYPOINT в Docker?

Sobes Copilot

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

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

sobes.tech AI

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

  • CMD (Command): Определяет команду по умолчанию, которая будет выполнена при запуске контейнера, если не указана команда при вызове docker rum. Может содержать только исполняемый файл или исполняемый файл с аргументами. Переопределяется аргументами команды docker rum.

    # CMD в форме exec
    CMD ["nginx", "-g", "daemon off;"] 
    # CMD в форме shell (не рекомендуется для продакшена из-за проблем с сигналами)
    # CMD nginx -g "daemon off;" 
    
  • ENTRYPOINT (Entrypoint): Определяет команду, которая всегда будет выполняться при запуске контейнера. Аргументы, указанные при вызове docker run, будут переданы этой команде в качестве параметров. Часто используется в сочетании с CMD для определения части команды (ENTRYPOINT) и ее аргументов по умолчанию (CMD).

    # ENTRYPOINT в форме exec
    ENTRYPOINT ["/usr/local/bin/my-script.sh"]
    

Сравнение CMD и ENTRYPOINT:

Характеристика CMD ENTRYPOINT
Назначение Команда по умолчанию Основная команда, которая всегда выполняется
Возможность переопределения через docker run Да (аргументом) Нет (только через флаг --entrypoint)
Использование с аргументами docker run Аргументы docker run заменяют CMD Аргументы docker run добавляются к ENTRYPOINT
Рекомендованное использование Задание аргументов исполняемого файла Задание исполняемого файла, который запускается