Mit Docker kannst du auf einem Raspberry Pi 5 mehrere Webserver parallel betreiben. Jeder Webserver läuft dabei in einem eigenen Container. So kannst du zum Beispiel Apache und nginx gleichzeitig testen, ohne dein System unnötig zu verbasteln.
Für diese Anleitung wird ein Raspberry Pi 5 mit installiertem Raspberry Pi OS oder einem vergleichbaren Linux-System verwendet.
sudo-RechtenDamit du die Testseiten später im Browser öffnen kannst, brauchst du die IP-Adresse des Raspberry Pi.
hostname -I
Beispielausgabe:
192.168.10.20
In dieser Anleitung wird als Beispiel folgende IP-Adresse verwendet:
192.168.10.20
Damit jede Testseite sauber getrennt bleibt, wird für jeden Webserver ein eigener Ordner erstellt.
mkdir -p ~/docker-webserver/apache/html
mkdir -p ~/docker-webserver/nginx/html
Danach in den Projektordner wechseln:
cd ~/docker-webserver
Nun wird eine einfache HTML-Testseite für den Apache-Webserver erstellt.
nano ~/docker-webserver/apache/html/index.html
Folgenden Inhalt einfügen:
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Apache Testseite</title>
</head>
<body>
<h1>Apache läuft auf dem Raspberry Pi 5</h1>
<p>Diese Testseite wird aus einem Docker-Container mit Apache ausgeliefert.</p>
</body>
</html>
In nano speichern mit:
Strg + OEnterStrg + XJetzt wird eine zweite HTML-Testseite für nginx erstellt.
nano ~/docker-webserver/nginx/html/index.html
Folgenden Inhalt einfügen:
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>nginx Testseite</title>
</head>
<body>
<h1>nginx läuft auf dem Raspberry Pi 5</h1>
<p>Diese Testseite wird aus einem Docker-Container mit nginx ausgeliefert.</p>
</body>
</html>
Auch hier speichern mit:
Strg + OEnterStrg + XDer Apache-Container wird mit dem offiziellen Image httpd gestartet.
docker run -d \
--name apache-testserver \
-p 8081:80 \
-v ~/docker-webserver/apache/html:/usr/local/apache2/htdocs:ro \
httpd:latest
Erklärung der wichtigsten Einträge:
| Eintrag | Bedeutung |
|---|---|
--name apache-testserver |
Name des Containers |
-p 8081:80 |
Port 8081 auf dem Raspberry Pi zeigt auf Port 80 im Container |
-v ...:/usr/local/apache2/htdocs:ro |
Der lokale HTML-Ordner wird in den Apache-Webserver eingebunden |
httpd:latest |
Docker-Image für Apache |
Der nginx-Container wird mit dem offiziellen Image nginx gestartet.
docker run -d \
--name nginx-testserver \
-p 8082:80 \
-v ~/docker-webserver/nginx/html:/usr/share/nginx/html:ro \
nginx:latest
Erklärung der wichtigsten Einträge:
| Eintrag | Bedeutung |
|---|---|
--name nginx-testserver |
Name des Containers |
-p 8082:80 |
Port 8082 auf dem Raspberry Pi zeigt auf Port 80 im Container |
-v ...:/usr/share/nginx/html:ro |
Der lokale HTML-Ordner wird in den nginx-Webserver eingebunden |
nginx:latest |
Docker-Image für nginx |
Öffne nun auf einem PC im gleichen Netzwerk einen Browser und rufe die Testseiten auf.
| Webserver | Adresse |
|---|---|
| Apache | http://192.168.10.20:8081 |
| nginx | http://192.168.10.20:8082 |
Wenn alles funktioniert, wird bei Apache die Apache-Testseite und bei nginx die nginx-Testseite angezeigt.
Mit folgendem Befehl kannst du prüfen, ob die Container laufen:
docker ps
Beispielausgabe:
CONTAINER ID IMAGE PORTS NAMES
abc123 httpd:latest 0.0.0.0:8081->80/tcp apache-testserver
def456 nginx:latest 0.0.0.0:8082->80/tcp nginx-testserver
Da die HTML-Dateien vom Raspberry Pi in die Container eingebunden werden, kannst du die Testseiten jederzeit direkt auf dem Raspberry Pi bearbeiten.
nano ~/docker-webserver/apache/html/index.html
nano ~/docker-webserver/nginx/html/index.html
Nach dem Speichern reicht es normalerweise, die Webseite im Browser neu zu laden.
Strg + F5 neu.
Apache stoppen:
docker stop apache-testserver
Apache wieder starten:
docker start apache-testserver
nginx stoppen:
docker stop nginx-testserver
nginx wieder starten:
docker start nginx-testserver
Wenn du die Testserver nicht mehr brauchst, kannst du sie stoppen und entfernen.
docker stop apache-testserver nginx-testserver
docker rm apache-testserver nginx-testserver
~/docker-webserver bleiben erhalten.
| Dienst | Container-Port | Port auf dem Raspberry Pi | Aufruf im Browser |
|---|---|---|---|
| Apache | 80 |
8081 |
http://192.168.10.20:8081 |
| nginx | 80 |
8082 |
http://192.168.10.20:8082 |
index.html.sudo ss -tulpen | grep 8081
sudo ss -tulpen | grep 8082
Apache-Logs:
docker logs apache-testserver
nginx-Logs:
docker logs nginx-testserver
Mit Docker lassen sich auf dem Raspberry Pi 5 sehr einfach mehrere Webserver parallel betreiben. Apache und nginx laufen dabei getrennt voneinander in eigenen Containern. Durch unterschiedliche Ports kann jeder Webserver eine eigene Testseite ausliefern. Das ist ideal zum Lernen, Testen und Vergleichen verschiedener Webserver.