2015-06-10 31 views
5

Vorrei fare qualche domanda sulle istruzioni ENTRYPOINT e CMD disponibili per l'uso in un Dockerfile.Docker: comprensione delle istruzioni ENTRYPOINT e CMD

  1. Fornire che sto montaggio directory locali come i volumi in un contenitore utilizzando fig o docker-compose. Quando vengono eseguite esattamente le istruzioni ENTRYPOINT e CMD?
    • Dopo che i volumi erano montati o prima?
  2. Se si passa uno script di bash a ENTRYPOINT, questo script verrà eseguito ogni volta che viene avviato un contenitore?
  3. Se è presente uno script bash aggiunto come ENTRYPOINT, tutti i comandi eseguiti con docker run o docker exec devono essere passati come argomenti a questo script?
  4. Quando vengono eseguite esattamente le installazioni CMD? Una volta avviato un container e montati i volumi?
  5. Perché può esserci solo uno CMD in un file Docker? Cosa succede se voglio avviare un contenitore con più processi/eseguire severa exacutables?
+0

1) ENTRYPOINT e CMD vengono eseguiti nell'ordine in cui appaiono nel file Docker, indipendentemente dal volume di montaggio 2) se si dispone di un ENTRYPOINT lanciando un verbo, puoi passare un parametro 3) sì per 'docker run' ma alcuni esempi potrebbero chiarirlo, e' docker exec' ti porta dentro il contenitore 4) CMD esegue swhen un container viene lanciato 5) puoi usare diversi CMD in un Dockerfile, ma verrà utilizzato solo l'ultimo, la finestra mobile è progettata per eseguire un processo, – user2915097

+0

se si desidera eseguirne diversi, saranno necessari alcuni strumenti come supervisore https://docs.docker.com/articles/ using_supervisord/o runit o s6 o daemontools vedere https://docs.docker.com/faq/ – user2915097

+0

Dato che CMD è facilmente sovrascritto e non ENTRYPOINT (a meno che non si esegua "docker run --entrypoint ..." di solito si ha ENTRYPOINT come ultimo di una riga nel Dockerfile e CMD come ultima riga, essendo in effetti il ​​parametro, che può cambiare – user2915097

risposta

1

1) EntryPoint e CMD vengono eseguiti nell'ordine in cui appaiono nella Dockerfile, indipendentemente dai volumi montare

2) se avete un EntryPoint lancio di un verbo, è possibile passare un parametro

3) sì per finestra mobile correre, ma alcuni esempi possono chiarire questo, e finestra mobile exec solo si ottiene all'interno del contenitore

4) CMD viene eseguito quando viene lanciato un contenitore

5) è possibile utilizzare diversi CMD in un Dockerfile, ma verrà utilizzato solo l'ultimo, la finestra mobile è progettata per eseguire un processo,

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

come CMD è facilmente sovrascritto e non entrypoint (a meno che docker run --entrypoint) di solito si ha entrypoint come l'ultimo di una riga nel vostro Dockerfile e CMD come l'ultima riga, essendo infatti il ​​parametro, che può cambiare

+0

Solo un punto, se vuoi iniziare più cose quando viene eseguito un contenitore (N una buona idea) è possibile utilizzare uno script, aggiungerlo al contenitore e quindi utilizzarlo come CMD. –

Problemi correlati