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

Python Senior Без компании
В чём разница между CMD и ENTRYPOINT в Dockerfile
Ответы
Разница между `CMD` и `ENTRYPOINT` в Dockerfile заключается в их назначении и поведении при запуске контейнера: - **ENTRYPOINT** определяет команду, которая всегда будет выполняться при запуске контейнера. Её можно дополнить аргументами из `CMD` или переопределить с помощью `docker run --entrypoint`. - **CMD** предоставляет аргументы по умолчанию для `ENTRYPOINT` или команду, которая выполнится, если `ENTRYPOINT` не указан. Аргументы `CMD` можно переопределить при запуске контейнера. Пример: ``` # ENTRYPOINT + CMD ENTRYPOINT ["echo", "Hello"] CMD ["World"] # docker run → "Hello World" # docker run myimage Python → "Hello Python" # Только CMD CMD ["echo", "Hello World"] # docker run → "Hello World" # docker run myimage ls → выполнится `ls` ``` Если `ENTRYPOINT` не указан, `CMD` определяет команду для запуска. Если `ENTRYPOINT` есть, `CMD` становится его аргументами по умолчанию.