2016-05-02 5 views
1

Ich habe diesen Behälter zu starten: 5.6.21-Apache von https://hub.docker.com/_/php/Docker Behälter nicht

ich installiert habe alles was ich brauche und meine Anwendung, aber ich habe einen Fehler gemacht, etwas zu tun falsch mit Apache configs.

Wenn ich versuche, meine Container starten erhalte ich diese Meldung:

Docker starten -ai my-Container

[Mo 02 19. Mai: 46: 33,358838 2016] [Kern: warnen] [pid 1] AH00111: Die Konfigurationsvariable $ {APACHE_LOG_DIR} ist nicht definiert [Mo 02. Mai 19: 46: 33.365305 2016] [core: warn] [pid 1] AH00111: Die Konfigurationsvariable $ {APACHE_LOG_DIR} ist nicht definiert AH00558: apache2: Der vollqualifizierte Domänenname des Servers konnte mit 172.17.0.2 nicht zuverlässig ermittelt werden. Stellen Sie den ‚Server‘ Richtlinie global Diese Nachricht zu unterdrücken (2) Keine solche Datei oder das Verzeichnis: AH02291: Kein Zugriff auf Verzeichnis ‚/ etc/apache2/$ {apache_log_dir} /‘ für Hauptfehlerprotokoll AH00014: Konfigurationsprüfung nicht bestanden

Wie kann ich das lösen? Ich möchte diese Konfiguration löschen. Ich kann diesen Container nicht einfach verlieren.

+2

Können Sie Ihre Dockerfile zu veröffentlichen, wenn Sie keine dockerfile verwendet haben, können Sie erklären, wie Sie erstellt Ihre Bild. Kannst du deine Konfiguration auch posten, damit wir sehen können, was falsch gelaufen ist? –

+0

Ken das Problem ist nicht mit meiner Dockerfile, weil es funktionierte, ist das Problem auf meiner Konfiguration ändert sich! Ich mache einen Fehler und setze eine falsche Leitungskonfiguration in die apache.conf und danach startet der Container nicht mehr. –

+0

Haben Sie die Änderung direkt im Container vorgenommen? Wenn ja, wie haben Sie die Änderung vorgenommen? Ich werde meine Antwort mit einer anderen Option –

Antwort

0

Da Sie nicht genug Informationen gegeben haben, um weiterzumachen, werde ich nur raten. Fühlen Sie sich frei, mehr Informationen zu Ihren Fragen hinzuzufügen, damit es einfacher ist, Ihnen zu helfen.

Wenn Sie Ihre Apache-Konfigurationsdatei suchen und nach APACHE_LOG_DIR suchen, wird dies wahrscheinlich auf Ihr Problem hinweisen.

Diese Zeile in den Protokollen ist interessant:

nicht Verzeichnis zugreifen kann '/ etc/apache2/$ {apache_log_dir} /'

nicht sicher, warum Sie ein Log-Verzeichnis haben würde unter/etc/apache2, aber schau in das Verzeichnis, um zu sehen, was du da drin hast, und setze APACHE_LOG_DIR entsprechend.

Eine andere Sache, die Sie versuchen können, ist die folgende

docker commit (container name or Id) myimage 

docker run -it myimage /bin/bash 

Dann begehen Änderungen wieder tun, um das Standbild zu erstellen und versuchen, es wie normal zu starten.

docker commit (container Id or name) myimage2 

docker run -d -p 80:80 myimage2 

Grundsätzlich den aktuellen Container Zustand als Bild speichern, damit Sie es nach oben in eine Schale und beheben die Probleme beginnen. Sobald Sie die Probleme behoben haben, können Sie ein neues Bild erstellen und damit Ihren Container ausführen.

Normalerweise vermeide ich diesen Schmerz, indem ich Änderungen nicht direkt in den Containern vornehme, ich mache nur Änderungen in meinen Dockerfiles und dann, wenn ich etwas machen muss, ändere ich die Dockerfile. Wenn es ein Problem gibt, muss ich nur die Docker-Datei reparieren, und die Container kommen nicht in diesen schlechten Zustand.

+0

thx ken aktualisieren, aber wir haben nicht "-e" -Option auf comand docker starten. ich muss nur die apache2.conf bearbeiten, die in /etc/apache2/apache.conf lokalisiert ist, aber weil ich den Container nicht starten kann, kann ich diese Datei nicht bearbeiten ... gibt es eine andere Möglichkeit, eine Containerdatei ohne Start zu bearbeiten? –

+0

Ihr Recht, ich dachte Hafenarbeiter laufen. Ich denke, das lässt die zweite Option, ich werde meine Antwort bearbeiten –

0

In meinem Fall habe ich nach dem Neustart des Computers (oder Schlaf/Neustart-System) ein Problem mit dem Starten eines Containers. Vor dem Start verwende ich docker exec Befehl. Beispiel:

docker exec -ti CONTAINER_NAME /bin/bash 

(Haben Sie eine Nachricht, die Behälter nicht läuft und dann)

docker start CONTAINER_NAME