InhaltsverzeichnisKlicke auf den Link, um zur gewünschten Stelle zu navigieren
Dieser Inhalt wurde automatisch aus dem Ukrainischen übersetzt.
Du deployst die Anwendung auf Coolify, der Build verläuft erfolgreich… und plötzlich beim Export des Images:
ERROR: failed to extract layer sha256:... write /var/lib/containerd/.../File/dirname-c.ri: no space left on device
Der Build wurde erstellt, aber das Image kann nirgendwo gespeichert werden - die Festplatte ist voll.
🤔 Warum passiert das?
Docker sammelt mit jedem Deployment Müll an:
- Alte Images - jeder Build erstellt ein neues Image, alte bleiben erhalten
- Build-Cache - Zwischenablagen werden nie automatisch gelöscht
- Gestoppte Container - nicht gelöschte Container von vorherigen Deployments
- Unbenutzte Volumes - Reste von gelöschten Services
Auf einem kleinen Server (4–8 GB Festplatte) kann dies die Festplatte innerhalb weniger Wochen aktiver Entwicklung füllen.
Besonders wenn du Rails + Sidekiq + Redis + Elasticsearch betreibst.
🔎 Diagnose
Überprüfe den Zustand der Festplatte:
df -h
Sieh dir an, wie viel Docker benötigt:
docker system df
Normalerweise siehst du Dutzende von Gigabyte im Abschnitt Images oder Build Cache.
🛠 Fix
docker system prune -a --volumes
Dieser Befehl löscht:
- Alle gestoppten Container
- Alle nicht verwendeten Netzwerke
- Alle Images ohne aktive Container
- Den gesamten Build-Cache
- Alle Volumes ohne aktive Container (--volumes)
⚠️ Achtung
--volumes löscht auch die Daten in Volumes.
Wenn deine Datenbank (PostgreSQL / MySQL) über ein Docker-Volume ohne externes Backup läuft - mach zuerst ein Dump.
🧼 Prävention
Um nicht regelmäßig in diese Situation zu geraten:
Füge einen Cron für die automatische Bereinigung hinzu
Wöchentlich um 3:00 Uhr nachts (ohne Volumes, um die DB nicht zu beeinträchtigen):
0 3 * * 0 docker system prune -af
Festplatte vergrößern
Wenn du Folgendes betreibst:
- Rails
- Elasticsearch
- Redis
- Sidekiq
4 GB Festplatte sind zu wenig.Komfortabler Mindestwert: 20-40 GB.
Build-Cache begrenzen
docker builder prune --keep-storage 2GB
Dies ermöglicht es, den Cache zu speichern, verhindert jedoch, dass er unkontrolliert anwächst.
Wenn das Deployment mit "no space left on device" fehlschlägt - das ist kein Fehler der Anwendung.Docker hat einfach zu viele alte Daten angesammelt.
Ein Befehl:
docker system prune -a --volumes
löst das Problem in Sekunden.
Aber es ist besser, die automatische Bereinigung einzurichten, um nicht daran denken zu müssen, wenn das nächste Release ansteht.
Dieser Beitrag hat noch keine Ergänzungen vom Autor.