Docker: comprensione delle istruzioni ENTRYPOINT e CMD

Vorrei fare una domanda su istruzioni ENTRYPOINT e CMD disponibili per l'utilizzo in un Dockerfile.

  1. Assicurando di installare directory locali come volumi in un contenitore utilizzando fig or docker-compose . Quando sono esattamente le istruzioni ENTRYPOINT e CMD eseguite?
    • Dopo che i volumi furono mounter o prima?
  2. Se passare uno script bash a ENTRYPOINT , verrà eseguito questo script each volta che viene avviato un contenitore?
  3. Se è stato aggiunto uno script bash come ENTRYPOINT , tutti i comandi eseguiti con esecuzione ENTRYPOINT o ENTRYPOINT vengono passati come argomenti a questo script?
  4. Quando esattamente sono eseguiti instautori CMD ? Una volta avviato un contenitore e montato i volumi?
  5. Perché può essere presente solo un CMD in un Dockerfile? Che cosa succede se voglio avviare un contenitore con diversi processi / eseguire severa exacutables?

1) ENTRYPOINT e CMD vengono eseguiti nell'ordine in cui appaiono nel Dockerfile, indipendentemente dal supporto dei volumi

2) se si dispone di un ENTRYPOINT che lancia un verbo, è ansible passare un parametro

3) sì per il run docker, ma alcuni esempi potrebbero chiarire questo, e l'esecutore del banco arriva solo nel contenitore

4) CMD esegue quando viene lanciato un contenitore

5) è ansible utilizzare più CMD in un Dockerfile, ma solo l'ultima verrà utilizzata, il docker è progettato per eseguire un process,

se si desidera eseguire più, sarà necessario alcuni strumenti come il supervisore http://docs.docker.com/articles/using_supervisord o runit o s6 o daemontools vedere http://docs.docker.com/faq

Poiché la CMD è facilmente override e non ENTRYPOINT (a less che non si docker run --entrypoint ) di solito si ha ENTRYPOINT come l'ultima per una row nel tuo Dockerfile e CMD come l'ultima row, essendo in realtà il parametro, che può cambiare