Я хотел бы задать вопрос о командах ENTRYPOINT
и CMD
, доступных для использования в файле Docker.Docker: понимание инструкций ENTRYPOINT и CMD
- При условии, что я монтаж локальных каталогов как тома в контейнере с использованием
fig
илиdocker-compose
. Когда точно выполняются инструкцииENTRYPOINT
иCMD
?- После того, как были сделаны тома или раньше?
- Если я передаю скрипт bash на
ENTRYPOINT
, будет ли этот скрипт выполняться каждый раз при запуске контейнера? - Если скрипт bash добавлен как
ENTRYPOINT
, будут ли переданы все команды, выполненные сdocker run
илиdocker exec
, в качестве аргументов этого скрипта? - Когда точно указаны
CMD
Выполнены иннаукции? Как только контейнер был запущен и установлены тома? - Почему в файле Docker может быть только один
CMD
? Что делать, если я хочу запустить контейнер с несколькими процессами/запустить severa exacutables?
1) ENTRYPOINT и CMD выполняются в том порядке, в котором они отображаются в файле Docker, независимо от того, монтируется ли тома 2), если у вас есть ENTRYPOINT запустив глагол, вы можете передать параметр 3) yes для 'docker run', но некоторые примеры могут это прояснить, а' docker exec' просто доставит вас внутри контейнера. 4) CMD выполняет swhen. контейнер запущен. 5) вы можете использовать несколько CMD в файле Docker, но будет использоваться только последний, docker предназначен для запуска одного процесса: – user2915097
, если вы хотите запустить несколько, вам понадобятся такие инструменты, как диспетчер https://docs.docker.com/articles/ using_supervisord/or runit или s6 или daemontools см. https://docs.docker.com/faq/ – user2915097
Поскольку CMD легко переоценить, а не ENTRYPOINT (если вы не используете «docker run --entrypoint ...», вы, как правило, имеете ENTRYPOINT в качестве последнего по одной строке в вашем Dockerfile и CMD в качестве последней строки, на самом деле это параметр, который может изменить – user2915097