В чем разница между 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 заменяется.