Wie starte ich Apache2 neu, ohne den Docker-Container zu beenden?

Lesezeit: 4 Minuten

Benutzeravatar von k0pernikus
k0pernikus

Ich verwende als Basis die php-Docker-Container mit dem Etikett:

php:5.6-apache

Wenn ich versuche, den Apache2 im Container neu zu starten, stoppt der Container:

root@phalconapp:/var/www/html# service apache2 restart
Restarting web server: apache2Terminated
root@phaclonapp:/var/www/html#
me@myLocalComputer:

Wie starte ich Apache2 neu, ohne den Container zu stoppen?

Ich möchte mit dem Container herumspielen und ihn anpassen, bevor ich meine Änderungen in die Dockerdatei einfüge. Ich möchte eine Erweiterung installieren und damit sie funktionieren, muss ich Apache neu starten, damit die Änderungen wirksam werden.

Dies ist die Protokolldatei über:

Attaching to dltasklight_phlaconapp_1
phlaconapp_1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
phlaconapp_1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
phlaconapp_1 | [Mon May 30 10:19:24.556154 2016] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.10 (Debian) PHP/5.6.22 configured -- resuming normal operations
phlaconapp_1 | [Mon May 30 10:19:24.556181 2016] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
phlaconapp_1 | [Mon May 30 10:21:11.754993 2016] [mpm_prefork:notice] [pid 1] AH00169: caught SIGTERM, shutting down
dltasklight_phlaconapp_1 exited with code 0

Wenn Sie Apache als primären Dienst verwenden, um Ihren laufenden Container beizubehalten, können Sie ihn NICHT neu starten. Einfach, weil Sie das Image erstellt und die CMD damit festgelegt haben.

Der Hauptzweck einer CMD besteht darin, Standardwerte für einen ausführenden Container bereitzustellen. Diese Standardwerte können eine ausführbare Datei enthalten oder sie können die ausführbare Datei weglassen, in diesem Fall müssen Sie auch eine ENTRYPOINT-Anweisung angeben.

Versuchen Sie neu zu laden, ohne einen Dienst neu zu starten:

/etc/init.d/apache2 reload

  • Das habe ich letztendlich bei der Entwicklung des Dev-Stacks gemacht. Danke, dass du es geschrieben hast und +1. Ich akzeptiere diese Lösung nicht, da das Ausführen des Neuladens am Ende keine Voraussetzung war, denn wenn die Erweiterungen installiert werden, bevor der Apache startet, ist es nicht erforderlich, ihn neu zu starten.

    – k0pernikus

    6. Juni 2016 um 12:08 Uhr

  • Akzeptierte diese Antwort, da die anderen eingehenden Antworten neben den Punkt gehen. Ein Neustart war nicht erforderlich, das Neuladen der Konfiguration war erforderlich, und dies hat mir geholfen, eine richtige Docker-Datei zu erstellen.

    – k0pernikus

    18. Juli 2017 um 17:04 Uhr

  • Gut. Ich kann mich nicht erinnern, einen anderen Befehl zu haben, der nur als Apache-Konfigurationen neu gestartet wird. Dieser Befehl ist wirklich nützlich für dieses Problem:}

    – Kau

    18. Juli 2017 um 17:07 Uhr

  • Hallo @MagnoC, was ist Ihr Basis-Image von Dockerfile?

    – Kau

    22. Dezember 2018 um 16:26 Uhr

Meine Lösung dafür war, meine Bash-Shell in den Container zu verlassen und den Container einfach außerhalb von Docker neu zu starten. Da Apache als primärer Dienst festgelegt ist, wird dadurch auch Apache neu gestartet und der Container nicht zum Absturz gebracht.

docker restart <container>

  • Dieser Befehl startet den Container neu, ist aber in anderen Fällen wirklich nützlich 🙂

    – Kau

    13. Januar 2020 um 11:31 Uhr

Benutzeravatar von Destrif
Zerstör

sudo docker kill --signal="USR1" your_appache_container

Andere Signale, die Sie verwenden können, um Folgendes zu erreichen:

Jetzt stoppen-Signal: BEGRIFF

Graceful Restart-Signal: USR1

Jetzt neu starten Signal: HUP

Anmutiges Stoppsignal: WINDE

Aus: Diese Internetseite

  • Das funktioniert bei mir nicht, ich denke, Sie müssen in Ihrer Antwort mehr Informationen geben. Ich erhalte die folgende Fehlermeldung, Fehlerantwort vom Daemon: Cannot kill container –signal=USR1: No such container: –signal=USR1. Ich habe darauf geachtet, den richtigen Container nach ID und Name einzugeben, beides derselbe Fehler.

    – Josef Astrahan

    10. Januar 2017 um 4:26 Uhr


  • Bitte ersetzen Sie das Zeichen vor “Signal” durch zwei Bindestriche (es wurde wahrscheinlich durch das Eingabefeld von stackoverflow automatisch korrigiert).

    – gut

    29. Juni 2017 um 8:19 Uhr

  • Ich hatte das Problem, dass es aus irgendeinem Grund nicht ausreicht, das Signal einmal zu senden, es muss zweimal gesendet werden. stackoverflow.com/questions/55262485/…

    – Paul Serikow

    20. März 2019 um 19:35 Uhr


Ich möchte den Container anpassen, ich muss eine Erweiterung installieren und damit sie funktionieren, muss ich Apache neu starten, damit die Änderungen wirksam werden.

Dies widerspricht dem Prinzip der unveränderlichen Infrastruktur von Docker. IMHO verwenden Sie den Docker-Container ähnlich wie eine vollwertige VM. Stattdessen würde ich Ihnen vorschlagen, das Docker-Image als endgültiges Artefakt zu behandeln und es zu versionieren.
Notiz: Dies ist nur meine bescheidene Meinung, Sie haben möglicherweise einen gültigen Anwendungsfall, den ich nicht kenne und auf den ich neugierig bin.

Im Docker verwende ich einen Befehl wie diesen:

exec /usr/sbin/httpd -D FOREGROUND

  • in welcher linux distro & version?

    – LucianDex

    6. Januar um 14:29 Uhr

Benutzeravatar von Vineeth
Vineth

Aber bevor Sie loslegen, schlägt Ihr Apache beim Neustart fehl? So geht es aus? In diesem Fall lassen Sie es bitte laufen, indem Sie die richtigen Konfigurationen vornehmen und sich diese Protokolle ansehen.

Eine Methode, die Sie ausprobieren können, ist die Anmeldung beim Container (um zu bashen), und Sie könnten immer eine Docker-Commit an einem Punkt, an dem es funktioniert. Sie können dann Ihr Basis-Container-Image darauf ändern.

Ich hatte Problemumgehungen für ähnliche Situationen, indem ich daraus neue Bilder erstellte engagiert sein diejenigen, die anders verwenden EINSTIEGSPUNKTist in meinem Dockefile.

  • in welcher linux distro & version?

    – LucianDex

    6. Januar um 14:29 Uhr

1404260cookie-checkWie starte ich Apache2 neu, ohne den Docker-Container zu beenden?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy