2015-06-10 2 views
5

Я хотел бы задать вопрос о командах ENTRYPOINT и CMD, доступных для использования в файле Docker.Docker: понимание инструкций ENTRYPOINT и CMD

  1. При условии, что я монтаж локальных каталогов как тома в контейнере с использованием fig или docker-compose. Когда точно выполняются инструкции ENTRYPOINT и CMD?
    • После того, как были сделаны тома или раньше?
  2. Если я передаю скрипт bash на ENTRYPOINT, будет ли этот скрипт выполняться каждый раз при запуске контейнера?
  3. Если скрипт bash добавлен как ENTRYPOINT, будут ли переданы все команды, выполненные с docker run или docker exec, в качестве аргументов этого скрипта?
  4. Когда точно указаны CMD Выполнены иннаукции? Как только контейнер был запущен и установлены тома?
  5. Почему в файле Docker может быть только один CMD? Что делать, если я хочу запустить контейнер с несколькими процессами/запустить severa exacutables?
+0

1) ENTRYPOINT и CMD выполняются в том порядке, в котором они отображаются в файле Docker, независимо от того, монтируется ли тома 2), если у вас есть ENTRYPOINT запустив глагол, вы можете передать параметр 3) yes для 'docker run', но некоторые примеры могут это прояснить, а' docker exec' просто доставит вас внутри контейнера. 4) CMD выполняет swhen. контейнер запущен. 5) вы можете использовать несколько CMD в файле Docker, но будет использоваться только последний, docker предназначен для запуска одного процесса: – user2915097

+0

, если вы хотите запустить несколько, вам понадобятся такие инструменты, как диспетчер https://docs.docker.com/articles/ using_supervisord/or runit или s6 или daemontools см. https://docs.docker.com/faq/ – user2915097

+0

Поскольку CMD легко переоценить, а не ENTRYPOINT (если вы не используете «docker run --entrypoint ...», вы, как правило, имеете ENTRYPOINT в качестве последнего по одной строке в вашем Dockerfile и CMD в качестве последней строки, на самом деле это параметр, который может изменить – user2915097

ответ

1

1) Entrypoint и C выполняются в порядке их появления в Dockerfile, независимо от объемов монтажа

2), если у вас есть Entrypoint запуска глагола, вы можете передать параметр

3) да докер бежать, но некоторые примеры могут пояснить это, и докер Exec просто получает вас внутри контейнера

4) CMD выполняется, когда контейнер запускается

5) вы можете использовать несколько CMD в файле Docker, но будет использоваться только последний, docker предназначен для запуска одного процесса:

Если вы хотите запустить несколько, вам понадобятся такие инструменты, как супервизор http://docs.docker.com/articles/using_supervisord или runit или s6 или Daemontools см http://docs.docker.com/faq

Как CMD легко перекрываться и не Entrypoint (если вы docker run --entrypoint) обычно не имеют Entrypoint как последний одной строкой в ​​Dockerfile и CMD в качестве последней строки, будучи на самом деле параметр, что может измениться

+0

Просто укажите, если вы хотите начать несколько вещей, когда контейнер запускается (N с хорошей идеей) вы можете использовать скрипт, добавить его в контейнер и затем использовать его как CMD. –

Смежные вопросы