2015-12-24 48 views
11

Sono nuovo nella finestra mobile. Nel nostro ambiente docker - Apache è stato installato ed è attivo e funzionante.
Ora ho bisogno di entrare nel contenitore, modificare il httpd.conf, salvarlo e quindi ho bisogno di riavviare l'apache.Come apportare modifiche a httpd.conf di apache in esecuzione all'interno del contenitore DOCKER e riavviare apache

Potete, per favore, fammi sapere, cosa deve essere fatto. Sono abbastanza confuso circa - comandi 'exec' e 'attach'.

risposta

12

Non c'è bisogno di collegare o exec (che in realtà è una caratteristica di debug in ogni caso)

È possibile utilizzare docker cp per copiare una versione locale del httpd.conf al contenitore. (In questo modo, è possibile modificare il file dal comfort del vostro ambiente locale)

docker cp httpd.conf <yourcontainer_name>:/path/to/httpd.conf 

Una volta fatto ciò, è possibile inviare un segnale USR1 per chiedere un riavvio graceful (vedi docker kill sintassi):

docker kill --signal="USR1" <yourcontainer_name> 

Sostituire <yourcontainer_name> dall'ID contenitore o dal nome che esegue Apache.

che funzionerà solo se il processo principale lanciato dal vostro contenitore è

CMD ["apachectl", "-DFOREGROUND"] 

saperne di più visita "Docker: How to restart a service running in Docker Container"

+0

Grazie VonC, Ma questi container docker sono creati e configurati da terzi per noi. Quindi continua a controllare dove si trova il Dockerfile e quali sono stati aggiunti tutti i comandi. Per favore fatemi sapere come controllare lo stesso: CMD ["apachectl", "-DFOREGROUND"] è stato aggiunto o no? Anche cosa farà esattamente USR1 ?, dovremmo eseguire questo comando all'esterno del contenitore? Grazie mille in anticipo. –

+0

@SunagSunagms molto semplice: fai un 'finestra mobile ispeziona | grep CMD' – VonC

+0

@SunagSunagms come per USR1, che è spiegato in https://kuldeeparya.wordpress.com/2015/01/17/docker-how-to -restart-a-service-running-in-docker-container /, l'ultimo link nella mia risposta. – VonC

1

Inserire un contenitore con l'apertura di una shell bash:

docker exec -it containerName bash 

Credo che si meglio solo ricaricare configurazione di apache e non riavviare apache. Ma non vorrei seguire questa rotta e modificare semplicemente Dockerfile e ricostruire e rieseguire l'immagine.

di modifica per link: https://docs.docker.com/engine/reference/commandline/exec/

+0

1) Grazie mille per la risposta rapida, che può apportare modifiche all'interno del contenitore a httpd.conf, ma quando si tenta di ricaricare la configurazione di Apache come - 'service httpd reload' Sta mostrando il comando bash: comando non disponibile. Per favore fatemi sapere come ricaricare la configurazione di apache all'interno del contenitore. 2) Inoltre, puoi indicarmi come trovare il percorso del file Docker e AGGIUNGERE le linee per apportare modifiche in httpd.conf, salvarlo e ricostruire e rieseguire l'immagine? –

0

Per aggiornare Apache configurazioni è necessario:

  1. Sostituire Configurazioni di Apache

    a. Se la cartella di configurazione è mappata all'esterno del contenitore, è necessario aggiornare le configurazioni al di fuori del contenitore. b. Se i file di configurazione di apache vengono memorizzati all'interno del contenitore, è necessario eseguire qualcosa di simile:

    finestra mobile cp httpd.conf YOUR_CONTAINER_NAME: /path/to/httpd.conf

  2. Do Graceful Apache riavviare:

    sudo finestra mobile exec -è YOUR_CONTAINER_NAME apachectl graceful