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.
Gefällt dir?Reagieren
🧵
Dieser Beitrag hat noch keine Ergänzungen vom Autor.