Eine Woche später gelang es mir, es zum Laufen zu bringen, aber auf eine andere Art und Weise. Ich hörte auf, mich mit dem Host zu beschäftigen, und begann zu lernen, wie Docker mein Leben retten kann.
Dieser Beitrag gab mir den Schlüssel:
Docker - Führen Sie Apache auf Host und Container für verschiedene Websites aus
Meine iniciatic Lektüre über Docker war diese: PHP Web Development mit Docker
Zusammenfassend muss ich Apache2.2 und PHP5.3 nicht auf meinem Host-Server installieren. Ich kann einen isolierten Container haben, in dem ich alles installieren kann, was ich brauche (normalerweise einen Dienst), und mögliche Inkompatibilitäten mit der Host-Betriebssystemversion vergessen. Docker verwaltet alles. Ich kann also einen Container mit Apache 2.2 + PHP 5.3 haben, wie es in einem Debian-Squeeze-Betriebssystem der Fall wäre. Ein weiterer Container mit Apache 2.2 + PHP 5.4 wie in einem Wheezy, ein anderer mit Apache 2.4 + PHP7.0 wie in Stretch und so weiter. Alle arbeiten zur gleichen Zeit und bedienen verschiedene Domänen. Um letzteres zu erreichen, muss Apache / Nginx auf dem Host als Reverse-Proxy fungieren und jede Domäne dank Docker-Port-Mapping in einen anderen Apache-PHP-Container umleiten. Sie müssen nicht einmal Apache / Nginx auf dem Host haben, es kann sich auch in einem Container befinden.
Der Docker-Weg besteht darin, jeden (Mikro-) Dienst in einem Container zu haben, damit Sie mariaDB in einem anderen Container usw. haben können.
Meine Schritte (zusammengefasst): ( Ich kann nicht mehr als auf Links posten, wenn ich genug Ruf habe, werde ich sie bearbeiten und hinzufügen )
0 - Lesen Sie mehr über Docker (je mehr desto besser): Erstellen von Bildern mit der Docker-Datei , Best Practices , Vernetzung innerhalb von Docker, ...
1 - Installieren Sie Docker: Befolgen Sie immer die offizielle Anleitung .
2 - Erstellen Sie ein Verzeichnis mit Ihrem zukünftigen Bildnamen (/ home / user / docker / images / apache22php53, z. B.). Erstellen Sie darin Ihre Docker-Datei und Konfigurationen (in diesem Fall virtualhost conf). Meine Docker-Datei war:
FROM debian:squeeze
LABEL maintainer="raguchi@gmail.com"
# squeeze new mirrors
RUN echo "deb http://archive.debian.org/debian/ squeeze contrib main non-free" > /etc/apt/sources.list
RUN apt-get update
# Common packages
RUN apt-get update && \
apt-get install -y --force-yes curl wget
RUN apt-get update && \
apt-get install -y --force-yes \
apache2 \
libapache2-mod-php5 \
ntp \
php5 \
php5-curl \
php5-gd \
php5-ldap \
php5-mcrypt \
php5-mysql \
vim
RUN a2enmod \
php5 \
rewrite \
ssl
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid
# RUN chown -R www-data:www-data /var/www
COPY conf/apache/virtualhosts /etc/apache2/sites-enabled
# disable default virtualhost
RUN a2dissite 000-default
EXPOSE 80
EXPOSE 443
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
Fügen Sie im Verzeichnis Ihre conf-Datei virtualhost in den Pfad ein: conf / apache / virtualhosts /
3 - Erstellen Sie das Bild mit (vorherige CD im Verzeichnis):
sudo docker build -t apache22php53 .
4 - Starten Sie den Container mit:
sudo docker run -ti -d -p 2253:80 -v /var/www/html:/var/www --name apache22php53 apache22php53 /bin/bash
Docker ordnet den Host-Port 2253 (-p) dem Container-Port 80 zu. Wir mounten (-v) auch unseren Host-Dokumentstamm (/ var / www / html) im Apache-Container-Dokumentstamm (in Squeeze ist / var / www). Sie setzen auch den Containernamen (--name).
5 - ssh zum Container mit:
sudo docker exec -ti apache22php53 /bin/bash
und starten Sie Apache bei Bedarf (wie in meinem Fall). "exit", um zum Host-Cli zurückzukehren.
6 - Navigieren Sie zu ... yourvhostdomain.com:2253 und Sie sollten sehen, dass Ihr Apache mit geladenem PHP5.3 ausgeführt wird.
Das sind die Grundlagen. Anschließend erfahren Sie, wie Sie Hostdaten (www, Datenbanken usw.) in Containern bereitstellen, wie Container zwischen ihnen und dem Host kommunizieren können (private IPs im Docker-Netzwerk) und wie Sie mit Docker-Compose mehrere Container einrichten sofort (Web, Datenbank usw.), Reverse-Proxy für mehrere Container-Webserver usw.