Docker Compose Anleitung

Docker Compose ist ein Tool, mit dem du mehrere Container über eine deklarative YAML-Datei als Dienst-Stack startest. Diese Anleitung zeigt Installation (Docker- und Compose-Varianten), eine einfache docker-compose.yml für WordPress, wie du einen Container mit bash startest, Rootless-Einsatz sowie sicheres Aufräumen (prune) — Schritt für Schritt.

Voraussetzungen

Schritt 1: Docker & Docker Compose installieren

Für moderne Docker-Installationen enthält Docker Compose v2 als Plugin. Beispiel (Debian/Ubuntu):

# Paketliste aktualisieren und nötige Pakete
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release

# Docker GPG-Key und Repo hinzufügen
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
  https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \
  | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

Prüfe Versionen:

docker --version
docker compose version

Alternative: Podman (rootless) ist eine gute Wahl, wenn du Rootless-Container möchtest; CLI- und compose-Tools verhalten sich ähnlich, aber nicht in allen Details identisch.

Schritt 2: Docker ohne Root (rootless) / Rechte

Um Docker-Befehle ohne sudo zu verwenden: entweder Nutzer zur docker-Gruppe hinzufügen oder Rootless-Setup verwenden.

Nutzer zur docker-Gruppe hinzufügen (Achtung: Gruppenzugriff gilt als erhöhte Berechtigung; Risiko bewusst sein):

sudo usermod -aG docker $USER
# Danach neu einloggen oder `newgrp docker`

Rootless Docker (sicherer): siehe offizielle Anleitung https://docs.docker.com/engine/security/rootless/ — Verhalten kann je Distribution variieren.

Schritt 3: Einfaches Compose-File + WordPress-Hosting

Lege ein Verzeichnis an und erstelle docker-compose.yml:

mkdir wordpress-stack && cd wordpress-stack
cat > docker-compose.yml <<'YML'
version: "3.8"
services:
  db:
    image: mariadb:10.6
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: example_root_pw
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wp
      MYSQL_PASSWORD: wp_password
    volumes:
      - db_data:/var/lib/mysql
  wordpress:
    image: wordpress:6.2-php8.1-apache
    depends_on:
      - db
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wp
      WORDPRESS_DB_PASSWORD: wp_password
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wp_data:/var/www/html
volumes:
  db_data:
  wp_data:
YML

Starte die Dienste:

docker compose up -d

Prüfe Logs:

docker compose logs -f wordpress

Zugriff im Browser: http://localhost:8080

Schritt 4: Ein Container mit bash starten / run bash command

Um interaktiv in einen Container zu gelangen oder einen Einmalbefehl aus composer auszuführen:

  1. Von laufendem Container bash:
docker exec -it <container_name_or_id> bash
# Falls kein bash vorhanden, versuche sh
docker exec -it <container_name_or_id> sh
  1. Einen Dienst aus docker-compose mit bash starten:
docker compose run --rm wordpress bash

Das erzeugt einen temporären Container und verbindet dich mit einer Shell.

Schritt 5: Aufräumen (Prune) — WARNUNG vor jedem destruktiven Befehl

Warnung: Die folgenden prune-Befehle löschen unbenutzte Container, Images, Volumes und Netzwerke. Erstelle ein Backup wichtiger Daten (z. B. Volumes exportieren) bevor du fortfährst.

docker container prune
docker image prune -a
docker volume prune
docker system prune --all --volumes

Tipp: Vor prune prüfen, welche Volumes/Images vorhanden sind:

docker volume ls
docker images
docker ps -a

Häufige Fehler & Troubleshooting

Beachte: Unterschiedliche Distributionen, Kernel-Versionen und Hardware können Verhalten verändern. Nutze offizielle Docs für tiefergehende Probleme und sichere Backups vor destruktiven Aktionen.

Kommst du an dieser Stelle nicht weiter oder funktioniert ein Schritt bei dir anders als beschrieben? Schreib uns einfach kurz, woran es hakt – schreib uns eine E-Mail, wir schauen es uns gemeinsam an.

Passende Themen

Häufige Fragen

Soll ich Docker oder Podman verwenden?

Beide haben ihre Berechtigung. Podman läuft standardmäßig rootless (potenziell sicherer), Docker hat das größere Ökosystem. Wir benennen die Unterschiede ehrlich statt einer Pauschalempfehlung.

Ist docker system prune gefährlich?

Es kann ungenutzte Container, Images und Volumes löschen - inklusive Daten, die noch gebraucht werden. Vor dem Ausführen immer prüfen, was betroffen ist, und wichtige Daten sichern.

Warum bekomme ich bei Docker eine Permission-Denied-Fehlermeldung?

Meist fehlt der eigene Nutzer in der docker-Gruppe. Das lässt sich beheben, sollte aber mit Bedacht gemacht werden, da Mitglieder dieser Gruppe root-ähnliche Rechte erhalten.