
Wir erklären die Einrichtung einer WordPress-Installation in einem Docker-Container, als Host-Betriebssystem dient Ubuntu 25.04.
Um neue Funktionen, Templates oder Einstellungen für eine Website auszuprobieren eignet sich die Installation von WordPress in einem Docker-Container auf dem eigenen Computer besonders gut. Hat man einmal das Grundgerüst für den Container eingerichtet, kann man daraus in wenigen Schritten neue Container erstellen. Die Verwendung eines Containers erspart die sonst aufwändige Installation von Server, Datenbank und WordPress nebst deren Verknüpfung.
Um WordPress in einem Container einzurichten, wird in der Regel Docker Compose verwendet, Mit Compose definiert man eine Art Bauanleitung in Form einer Datei, in der die notwendigen Dienste (WordPress und eine Datenbank wie MySQL oder MariaDB) aufgelistet werden.
Erforderlich sind die nachfolgenden Schritte:
- Docker-Software installieren
- ein Verzeichnis für den neuen WordPress- Container einrichten
- die compose.yaml Datei erstellen
- Container starten
Schritt 1 – die Installation von Docker – haben wir im vorausgehenden Beitrag erklärt.
Docker Daemon starten
Um mit Docker arbeiten zu können muss der Docker-Daemon gestartet sein. Der Daemon ( Disk And Execution MONitor) ist ein Hintergrunddienst, eine Art Programm, das im Hintergrund läuft und verschiedene Aufgaben ausführt. Sie können prüfen, ob der Dienst läuft mit dem Befehl im Terminal:
systemctl status docker
In der Regel wird er beim Start des Computers automatisch mit gestartet.
Ansonsten starten Sie den Docker-Daemon in einem Terminal mit dem Befehl
sudo systemctl start docker
Zur Kontrolle nach einer Neu-Installation von Docker verwenden Sie einen Test-Container:
sudo docker run hello-world
Ein Verzeichnis anlegen
Erstellen Sie ein neues Verzeichnis in Ihrem Benutzerordner (Persönlicher Ordner) entweder über das Kontextmenü der Dateiverwaltung mit der Option „Neuer Ordner“ oder der Tastenkombination
Shift + Strg + N

oder in einem Terminal mit dem Befehl:
mkdir my-wp_1
Der Name des Verzeichnisses – hier als Beispiel my-wp_1
– ist frei wählbar. Er wird aber später zur Benennung von Container, Volumes und Netzwerk verwendet.
Docker Compose
Meist wird Docker-Compose als Plugin gleich zusammen mit der Docker-Engine installiert. Um dies zu prüfen, lassen Sie sich in einem Terminal die Version anzeigen mit dem Befehl :
docker compose version
Sollte es nicht vorhanden sein, installieren Sie das Plugin nachträglich:
sudo apt update<br>sudo apt install docker-compose-plugin
Die Compose Datei
Die Docker-Compose Datei definiert die Konfiguration für alle benötigten Dienste, wie verwendete Container-Images, Ports, Volumes und Netzwerke.
Eine Docker-Compose Datei für WordPress definiert typischerweise zwei Hauptdienste: einen für WordPress selbst und einen für eine Datenbank. In der Datenbank werden später alle Inhalte der Website, wie Seiten, Beiträge, Benutzerdaten und Einstellungen abgelegt.
Erstellen Sie in einem Texteditor eine Datei mit dem nachstehenden Inhalt und speichern diese unter dem Namen compose.yaml
in dem neu erstellten Verzeichnis (my-wp_1).
# Datei: compose.yaml
services:
db:
image: mariadb:latest
restart: always
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
MYSQL_ROOT_PASSWORD: rootpass
volumes:
- db_data:/var/lib/mysql
wordpress:
image: wordpress:latest
restart: always
ports:
- "8000:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
depends_on:
- db
volumes:
- wp_content:/var/www/html/wp-content
volumes:
db_data:
wp_content:
Sie sehen hier services
auf der ersten Ebene, ohne Einrückung, db
und wordpress
auf der zweiten Ebene, mit zwei Leerzeichen eingerückt. Diese werden dann auf der dritten und vierten Ebene konkret definiert. Mit image
geben Sie vor, welches konkrete Container-Image vom Docker-Hub herunter geladen werden soll. Hier wird also Docker angewiesen, das aktuelle Container-Image von MariaDB und das von WordPress auf Ihren Computer zu laden (soweit es noch nicht vorliegt) und daraus jeweils einen Container zu bauen.
Die Anweisung restart: always
bewirkt, dass der Container automatisch neu gestartet wird, sobald er beendet wurde, egal aus welchem Grund (manuelles Beenden, Neustart des Rechners oder Fehler).
Mit der environment
– Anweisung werden Umgebungsvariablen festgelegt, die zur Laufzeit des Containers zur Verfügung stehen sollen. So sorgt z.B. das Datenbank-Passwort dafür, dass der WordPress-Container automatisch auf die Datenbank zugreifen kann.
Mit der Konfiguration von ports
wird Port 80 im Container auf Port 8000 des Host-Computer verfügbar. Das wird als Port-Weiterleitung oder Port-Mapping bezeichnet. Dadurch kann man Port 80 von außerhalb des Containers erreichen. Die beiden Ports bilden eine Art Kommunikationsendpunkte, zwischen denen man eine Verbindung schafft, ein wenig wie ein virtuelles Kabel. Dabei dient die Port-Nummer dazu, dem Computer mitzuteilen, an welchen Service ein Datenpaket gesendet werden soll (vergleichbar einer Zimmernummer in einem Hotel). Hier also verbirgt sich hinter dem Port 80 der Service WordPress. Man kann über einen Browser unter Angabe des Ports 8000 auf WordPress im Container zugreifen.
Port 80 ist auf dem Host-Rechner möglicherweise bereits von anderen Anwendungen belegt. Um nicht mit einer existierenden Belegung auf dem Host zu kollidieren oder Sicherheitsbedenken einzugehen, ist es üblich hier einen anderen Port zu verwenden. Daher wählt man für die Verbindung mit dem Container-Port meist eine freie Port-Nummer im vierstelligen Bereich, z.B. 8080 oder 8000.

Die Angabe volumes
finden Sie zwei mal. Innerhalb der Service-Definition dient sie der Verknüpfung des Speicherortes im Container mit einem Verzeichnis außerhalb des Containers. Hier also var/lib/mysql
im Container mit dem Verzeichnis db_data
außerhalb des Containers auf dem Host-Rechner. Auf erster Ebene definiert sie ein benanntes Volume auf dem Host-Rechner. Auf Volumes gehen wir weiter unten noch näher ein.
Werden in der compose-Datei keine expliziten Angaben zum Netzwerk gemacht, erstellt Docker selbständig ein isoliertes Standard-Bridge-Netzwerk. Damit können die Container untereinander kommunizieren. In unserem Beispiel greift WordPress über dieses isolierte Netzwerk auf die Datenbank zu. Von außen ist dieses Standard- Netzwerk nicht zu erreichen
Exkurs: Version
In vielen Beispielen findet man in der ersten Zeile der Compose- Datei eine Versionsangabe, z.B.
version: 3.9
Seit Docker Compose Version V2 ist die Version-Zeile in der YAML-Datei optional. Das Schema richtet sich dann automatisch nach den verwendeten Features und wird intern geprüft.
Container Starten
Sie starten den Container in einem Terminal mit dem Befehl
sudo docker compose up -d
Befehl | Bedeutung |
---|---|
sudo | den Befehl als Administrator ausführten |
docker compose | den Inhalt der Datei auswerten |
up | Befehl für den Start |
-d | „detached“: im Hintergrund ausführen, das Terminal kann geschlossen werden |
Genau genommen werden mit dem Befehl
- die Container-Images für die in der YAML-Datei bestimmten Services vom Docker-Hub heruntergeladen (soweit noch nicht auf dem Computer vorhanden),
- aus dem Images Container erstellt (ein MariaDB- und ein WordPress-Container),
- beide in einem gesonderten Netzwerk verbunden und schließlich
- als Hintergrunddienst gestartet.


Hat alles funktioniert, sehen Sie im Terminal die Meldungen „Created“ für die Volumes und „Started“ für die Container.
Exkurs Compose Plugin:
In einigen Tutorials sehen Sie noch den Befehl
docker-compoe
Das ist der – veraltete – Befehl aus Version V1, einer „Standalone“-Version.
Aktuelle Installationen mit Version V2 nutzen das integrierte Docker Compose Plugin, einer Erweiterung des Docker CLI (Command Line Interface).
Der aktuelle Befehl hat keinen Bindestrich, also:
docker compose
WordPress starten
Rufen Sie im Adressfeld eines Browsers die folgende Adresse auf:
http://localhost:8000
Hinweis: Möglicherweise müssen Sie die Sicherheitseinstellungen des Browsers ändern, um eine Seite mit http
aufrufen zu können.
Zunächst startet die WordPress Installation.

Wählen Sie die gewünschte Sprache für die Bedienoberfläche (das Backend) aus und bestätigen Sie mit „weiter“.

Anschließend geben Sie Ihrer Website einen Titel und legen einen Benutzer mit Passwort und E-Mail an. Die Sichtbarkeit für Suchmaschinen hat für eine Testumgebung ohne Erreichbarkeit aus dem Internet keine Bedeutung. Bestätigen Sie mit „WordPress installieren“.

Nach der erfolgreichen Installation können Sie sich im Backend anmelden.

Es öffnet sich ein Dashboard.

Von hier aus gelangen Sie über die Schaltfläche „Zur Website“ oben links zu einer Vorschau der neuen Seite.


Volumes
Docker-Volumes sind spezielle Speicherbereiche auf dem Host-System, die Daten über das Leben eines Containers hinaus erhalten. In unserem WordPress-Setup werden zwei Volumes verwendet:
- db_data: speichert dauerhaft die Datenbankinhalte von MariaDB.
- wp_content: enthält alle hochgeladenen Medien, installierten Themes und Plugins.
Diese Volumes sorgen dafür, dass auch nach dem Neustart oder Löschen der Container keine Daten verloren gehen. Nur die Container-„Hülle“ wird entfernt – die eigentlichen Inhalte bleiben bestehen.
Unter Ubuntu finden Sie die Dateien der Volumes im Verzeichnis
/var/lib/docker/volumes
In einem Terminal-Fenster lassen Sie sich die Dateien anzeigen mit
sudo docker volume ls

Und in der Dateiverwaltung:

Schauen Sie sich das Innenleben eines Volumes an, im Terminal mit dem Befehl
sudo docker volume ls<br>sudo docker volume inspect <volume-name>
Backup der Volumes
Um Inhalte zu sichern, können die Volumes einfach als Archiv-Datei gespeichert werden. Dazu nutzt man folgende Befehle im Terminal:
sudo docker volume inspect wp_content
Der Pfad im Feld „Mountpoint“ zeigt, wo das Volume auf dem Host – also auf Ihrem Computer – liegt.
Ein einfaches Backup aller Inhalte von wp_content:
sudo tar -czvf wp_content-backup.tar.gz -C /var/lib/docker/volumes/wp_content/_data .
Ebenso kann auch db_data gesichert werden.
Weitere Informationen zum Backup von Docker-Volumes:
Container beenden
Sie können den Container beenden und die Volumes erhalten mit dem Befehl
docker compose down
Möchten Sie auch die Volumes löschen, verwenden Sie
docker compose down --volumes
Ausblick
Mit diesem Setup steht eine voll funktionsfähige WordPress-Instanz bereit – ideal für Tests, Theme-Anpassungen oder Plugin-Entwicklung. Wer möchte, kann das Setup weiter ausbauen:
- phpMyAdmin zur komfortablen Verwaltung der Datenbank
- Traefik oder Nginx für HTTPS und Domainweiterleitung
- Eigene WordPress-Themes oder -Plugins entwickeln durch Mounting weiterer Verzeichnisse
- Automatische Backups per Cronjob oder docker exec-Skripte
Docker eignet sich also nicht nur zum schnellen Testen, sondern auch als Grundlage für anspruchsvolle lokale Entwicklungsumgebungen.
Quellen:
Bernd Öggl, Michael Kofler: „Docker“, 4. Auflage, Rheinwerk Verlag 2023