Docker auf dem Raspberry Pi - ARM-Images und was es zu beachten gibt

Docker auf dem Raspberry Pi - ARM-Images und was es zu beachten gibt

Der Raspberry Pi ist eine beliebte Plattform für Heimserver und Self-Hosting – Docker läuft darauf gut, wenn man ein paar Besonderheiten kennt.

ARM-Architektur verstehen

  • Der Raspberry Pi nutzt ARM-Prozessoren:
  • RPi 2/3 – ARMv7 (32-bit, linux/arm/v7)
  • RPi 4/5 – ARM64 (64-bit, linux/arm64) – mit 64-Bit-OS auch als arm64 nutzbar

Docker-Images müssen für die Zielarchitektur gebaut sein. Man kann kein x86-Image auf einem Raspberry Pi ausführen.

Multi-Arch-Images prüfen

Die meisten populären Images unterstützen heute mehrere Architekturen:

# Verfügbare Plattformen eines Images prüfen
docker manifest inspect nginx:alpine | grep -A 3 "platform"

# Oder per skopeo
skopeo inspect --raw docker://nginx:alpine | python3 -m json.tool | grep arch

Beim docker pull auf dem Raspberry Pi wird automatisch das passende Image geladen, wenn das Image Multi-Arch unterstützt.

Docker auf dem Raspberry Pi installieren

# Empfohlen: offizielles Skript
curl -fsSL https://get.docker.com | sh

# User zur docker-Gruppe hinzufügen (kein sudo für docker)
sudo usermod -aG docker $USER
newgrp docker

# Docker Compose als Plugin
sudo apt-get install docker-compose-plugin
# Oder als Binary
sudo pip3 install docker-compose

Images die ARM-Builds haben

Viele Self-Hosting-Anwendungen bieten native ARM-Images:

# Beispiel: Heimdall, Pi-hole, Portainer
services:
  portainer:
    image: portainer/portainer-ce:latest  # ARM64 inklusive

  pihole:
    image: pihole/pihole:latest  # ARM32 und ARM64

  heimdall:
    image: lscr.io/linuxserver/heimdall:latest  # linuxserver.io = immer ARM

linuxserver.io ist eine verlässliche Quelle für ARM-kompatible Images – fast alle ihre Images unterstützen arm64 und arm/v7.

Images ohne ARM-Unterstützung

Wenn kein ARM-Image verfügbar ist, gibt es zwei Optionen:

Option 1: Selbst bauen

# Auf dem Pi direkt bauen (langsam aber einfach)
docker build -t myimage:arm .

Option 2: Cross-Compilation auf x86

# Auf dem Desktop-Rechner für ARM bauen
docker buildx build --platform linux/arm64 -t myimage:arm64 --push .

Performance auf dem Raspberry Pi

| RPi-Modell | RAM | Empfehlung |
|---|---|---|
| RPi 3B | 1 GB | Maximal 2-3 leichte Container |
| RPi 4 (4 GB) | 4 GB | 5-10 Container, leichte Dienste |
| RPi 4 (8 GB) | 8 GB | Kleine Heimserver-Stacks |
| RPi 5 | 4-8 GB | Deutlich schneller, für anspruchsvollere Workloads |

SD-Karte vs. SSD

Die SD-Karte ist der größte Performance-Bottleneck. Datenbank-Container, die viel I/O schreiben (MySQL, PostgreSQL, Grafana), sollten auf einer SSD laufen:

# Boot von SD, Daten auf SSD
# Docker-Datenpfad verschieben in /etc/docker/daemon.json
{
  "data-root": "/mnt/ssd/docker"
}

Temperaturüberwachung

Bei schwerer Last wird der Pi 4 warm. Überwachung:

# Aktuelle CPU-Temperatur
vcgencmd measure_temp

# Im Container
docker run --rm --privileged debian vcgencmd measure_temp

Bei Drosselung (throttled=0x50005) helfen aktive Kühlung oder ein Gehäuse mit Kühlkörpern.