2015-12-24 9 views

Antwort

12

Keine Notwendigkeit zu befestigen oder exec (das ist wirklich eine Debug-Funktion ist sowieso)

Sie können docker cp eine lokale Version Ihres httpd.conf in den Behälter zu kopieren. (Auf diese Weise können Sie die Datei aus dem Komfort Ihrer lokalen Umgebung ändern)

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

Sobald dies geschehen ist, können Sie ein USR1 Signal bitten für einen ordnungsgemäßen Start senden (siehe docker kill Syntax):

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

Ersetzen Sie <yourcontainer_name> durch die Container-ID oder den Namen, auf dem Apache ausgeführt wird.

, dass nur, wenn der Hauptprozess von Ihrem Container

abgefeuert werden, arbeiten
CMD ["apachectl", "-DFOREGROUND"] 

Siehe mehr bei "Docker: How to restart a service running in Docker Container"

+0

Dank VonC, Aber diese Docker-Container gebaut und von dem Dritten für uns konfiguriert. Also immer noch überprüfen, wo die Dockerfile ist und was alle Befehle darin hinzugefügt wurde. Können Sie bitte lassen Sie mich wissen, wie Sie das gleiche überprüfen: CMD [ „apachectl“, „-DFOREGROUND“] hinzugefügt wurde oder nicht? Auch, was genau der USR1 tun wird, sollten wir diesen Befehl außerhalb des Containers ausführen? Vielen Dank im Voraus. –

+0

@SunagSunagms sehr einfach: Sie einen 'Docker inspect | grep CMD' – VonC

+0

@SunagSunagms wie für USR1, dass in https://kuldeeparya.wordpress.com/2015/01/17/docker-how-to erklärt -restart-a-service-running-in-docker-container /, der letzte Link in meiner Antwort. – VonC

1

Geben Sie einen Behälter, der durch eine Bash-Shell öffnen:

docker exec -it containerName bash 

Ich denke, Sie besser nachladen nur Apache-Konfiguration und nicht Apache neu starten. Aber ich würde diese Route nicht gehen und nur Dockerfile ändern und das Image neu erstellen und erneut ausführen.

bearbeiten für Link: https://docs.docker.com/engine/reference/commandline/exec/

+0

1) vielen Dank für die schnelle Antwort, ich Änderungen im Inneren des Behälters zu httpd.conf machen, aber wenn ich versuche, den apache-Konfiguration als neu zu laden - 'Service httpd Reload' Es zeigt die Bash: Befehl ist nicht verfügbar. Bitte lassen Sie mich wissen, wie Apache Config im Container neu zu laden. 2) Sie können aber auch lassen Sie es mich wissen, wie Sie den Pfad finden Datei Docker und die oben genannten Zeilen zu machen, Änderungen in httpd.conf speichern und wieder aufzubauen und das Bild erneut ausführen? –

0

Apache zu aktualisieren configs müssen Sie:

  1. ersetzen Apache konfiguriert.

    a. Wenn Sie einen Konfigurationsordner außerhalb des Containers zugeordnet haben, sollten Sie die Konfiguration außerhalb des Containers aktualisieren. b. Wenn Ihr Apache configs innerhalb des Behälters gespeichert sind, müssen Sie etwas laufen:

    Docker cp httpd.conf YOUR_CONTAINER_NAME: /path/to/httpd.conf

  2. Sie Graceful Apache neu starten:

    sudo docker exec -es YOUR_CONTAINER_NAME apachectl graceful

Verwandte Themen