2015-01-14 28 views
5

Ho una serie di test che vorrei eseguire sul contenitore docker. Nel mezzo dei test sto cambiando i dati di test e devo riavviare JETTY.Docker: come riavviare il processo all'interno del contenitore?

Qual è il modo migliore per farlo?

Posso immaginare alcune opzioni:

  1. Con SSH - ma per lo ssh finestra mobile non è l'opzione migliore.

  2. Python agente sulla finestra mobile per ascoltare prese - esporre un altro porto, collegare e riavviare pontile.

Forse ci sono idee migliori per questo?

Grazie

risposta

10

Suona come il processo si sta cercando di riavviare il processo primario per il contenitore finestra mobile (cioè quella impostata. nel tuo Dockerfile se ne hai uno, e quando esegui 'ps -ef' all'interno del contenitore vedresti il ​​PID per il tuo processo impostato su 1). Se questo è il caso, non è possibile riavviarlo dall'interno del contenitore. Dovresti solo riavviare il contenitore stesso:

docker restart <container_id> 
+0

Era quasi un anno e mezzo fa ... :) Effettivamente questo è il modo giusto per riavviare il processo. Riavvia solo contenitore docker. Questo è il principio principale della soluzione docker stessa. – SergiiKozlov

2

Inserire il contenitore e riavviarlo.

Manuale Way:

docker exec -it <containeridorname> /bin/bash 

Oppure modo automatizzato:

docker exec -it <containeridorname> /restartjettycommand.sh 
+0

Grazie per la soluzione. Funziona bene. Ma ora ho un altro problema. Comincio il molo con il comando CMD da Dockerfile. E sembra che non riesco a riavviare questo processo :( – SergiiKozlov

+0

Non sono sicuro dei particolari per il molo me stesso.Un'alternativa sarebbe quella di utilizzare qualcosa come runit o supervisord - quindi è possibile eseguire nel contenitore e semplicemente riavviare il servizio. – user2105103

Problemi correlati