В чем разница между CMD и ENTRYPOINT в Docker

Python Senior Без компании
В чем разница между CMD и ENTRYPOINT в Docker
Ответы
Оба инструкции определяют команду, которая выполняется при запуске контейнера, но есть ключевые различия: - **CMD** - предоставляет аргументы по умолчанию для ENTRYPOINT или команду, которая будет выполнена. Её можно переопределить при запуске контейнера через `docker run`. - **ENTRYPOINT** - определяет основную команду, которая всегда выполняется. Аргументы CMD добавляются к ENTRYPOINT, если он установлен. Переопределяется только с помощью `--entrypoint`. Пример с CMD: ``` FROM alpine CMD ["echo", "Hello from CMD"] ``` При запуске `docker run <image>` выведет "Hello from CMD", но можно переопределить: `docker run <image> echo "Overridden"`. Пример с ENTRYPOINT: ``` FROM alpine ENTRYPOINT ["echo"] CMD ["Hello from ENTRYPOINT"] ``` Здесь `docker run <image>` выведет "Hello from ENTRYPOINT", а `docker run <image> Overridden` выведет "Overridden", так как CMD заменяется.