2015-12-24 49 views
11

Jestem nowy w dockingu. W naszym środowisku dokowania - Apache został zainstalowany i jest już uruchomiony.
Teraz muszę dostać się do pojemnika, zmodyfikować httpd.conf, zapisać go, a następnie muszę ponownie uruchomić apache.Jak wprowadzić zmiany w pliku httpd.conf apache działającym w kontenerze DOCKER i ponownie uruchomić apache

Czy możecie proszę dać mi znać, co należy zrobić. Jestem dość zdezorientowany - Polecenia "exec" i "attach".

Odpowiedz

12

Nie ma potrzeby, aby dołączyć lub exec (który jest naprawdę funkcja debugowania tak)

Można użyć docker cp skopiować lokalną wersję swojego httpd.conf do pojemnika. (W ten sposób można zmodyfikować plik z zaciszu swojego lokalnego środowiska)

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

Gdy to zrobisz, możesz wysłać sygnał USR1 prosić o wdzięcznym restartu (patrz docker kill składnię):

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

Zastąp <yourcontainer_name> przez identyfikator kontenera lub nazwę, na której działa Apache.

To zadziała tylko wtedy, gdy główny proces uruchomiony przez pojemnik jest

CMD ["apachectl", "-DFOREGROUND"] 

Zobacz więcej w "Docker: How to restart a service running in Docker Container"

+0

Dzięki VonC, Ale te kontenery doków są budowane i konfigurowane przez nas do nas. Wciąż sprawdzając, gdzie znajduje się plik Docker i jakie są w nim wszystkie polecenia. Czy możesz dać mi znać, jak to sprawdzić: CMD ["apachectl", "-DFOREGROUND"] został dodany, czy nie? Co dokładnie zrobi USR1 ?, czy powinniśmy uruchomić to polecenie poza kontenerem? Dziękuję bardzo z góry. –

+0

@SunagSunagms bardzo proste: wykonaj "doker inspekcję | grep CMD' – VonC

+0

@SunagSunagms jak dla USR1, wyjaśniono to w https://kuldeeparya.wordpress.com/2015/01/17/docker-how-to -restart-a-service-running-in-docker-container /, ostatni link w mojej odpowiedzi. – VonC

1

Wprowadź pojemnika przez otwarcie powłoki bash:

docker exec -it containerName bash 

Chyba lepiej po prostu przeładować apache config i nie restart apache. Ale nie pójdę tą drogą i po prostu zmodyfikuję plik Dockerfile i odbuduję i ponownie uruchomię obraz.

edycja na link: https://docs.docker.com/engine/reference/commandline/exec/

+0

1) Bardzo dziękuję za szybką odpowiedź, mogę dokonywać zmian wewnątrz pojemnika do httpd.conf, ale kiedy spróbować ponownie załadować config apache jako - "usługa przeładowania httpd" Pokazuje bash: polecenie nie jest dostępne. Proszę dać mi znać, jak załadować ponownie konfigurację apache wewnątrz kontenera. 2) Ponadto, proszę dać mi znać, jak znaleźć ścieżkę do pliku Docker i ADD linii, aby dokonać zmian w httpd.conf zapisać i odbudować i ponownie uruchomić obraz? –

0

Aby zaktualizować Apache configs trzeba:

  1. Wymienić Konfiguracja Apache.

    a. Jeśli masz skonfigurowany folder zmapowany spoza kontenera, powinieneś zaktualizować konfigurację poza kontenerem. b. Jeśli Apache configs są przechowywane wewnątrz pojemnika, trzeba będzie uruchomić coś takiego:

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

  2. Wykonaj Płynnego Apache restart:

    sudo doker Exec -to YOUR_CONTAINER_NAME apachectl wdzięku