Ulaşım
- Adres:Batıkent Mh. 8910 Sk. 6. Etap 1H No: 18 Yeni Toki Eyyübiye / Şanlıurfa (Yeni Alım Satım Karşısı)
- Telefon:0 (545) 528 88 93
- eMail: info@alestaweb.com
Docker'da "no space left on device" (cihazda yer kalmadı) hatası mı alıyorsunuz? Container başlatamıyor, image çekemiyor musunuz? Alesta Web olarak Docker disk dolu sorununu 7 farklı yöntemle çözeceğiz (7 proven methods to fix Docker no space error). Disk temizliği, prune komutları ve kalıcı çözümlerle sisteminizi optimize edin!
Error response from daemon: no space left on device ERROR: failed to solve: error writing layer blob: write /var/lib/docker/...: no space left on device docker: no space left on device error copying files from host mkdir: cannot create directory: No space left on device
Bu hata Docker'ın veri depoladığı dosya sisteminde yer kalmadığında ortaya çıkar (occurs when Docker storage runs out of space). Docker varsayılan olarak /var/lib/docker dizininde şunları depolar:
Alesta Web olarak en sık karşılaştığımız sebepler (most common causes we encounter):
Docker otomatik temizlik yapmaz! (Docker doesn't auto-clean!) Manuel olarak prune komutlarını çalıştırmanız gerekir.
İlk olarak Docker'ın ne kadar yer kullandığını kontrol edin (first check how much space Docker uses):
docker system df
Örnek Çıktı / Example Output:
TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 47 15 12.5GB 8.2GB (65%) Containers 23 3 1.2GB 900MB (75%) Local Volumes 8 2 4.3GB 3.1GB (72%) Build Cache 156 0 7.8GB 7.8GB (100%)
RECLAIMABLE sütunu temizlenebilir disk alanını gösterir (shows reclaimable disk space).
docker system df -v
Bu komut tüm image, container ve volume'leri listeleyerek hangilerinin ne kadar yer kapladığını gösterir (lists all items with their disk usage).
# Linux/macOS df -h /var/lib/docker # Windows (PowerShell) Get-Volume
Alesta Web İpucu: docker system df komutunu haftada bir çalıştırarak disk durumunu takip edin (run weekly to monitor disk status).
En hızlı ve kapsamlı temizlik yöntemi (fastest and most comprehensive cleanup method):
docker system prune
Bu komut şunları temizler (this command cleans):
docker system prune -a --volumes
Bu komut şunları da temizler (additionally cleans):
UYARI: Bu komut çalışan container'lara bağlı olmayan HER ŞEYİ siler! (deletes EVERYTHING not attached to running containers!)
docker system prune -a -f
-f (force) parametresi onay istemez, direkt siler (skips confirmation prompt).
Bir müşterimizin CI/CD sunucusunda (GitLab Runner) docker system prune -a çalıştırdık:
docker images
Boyutlarıyla birlikte tüm image'ları gösterir (shows all images with sizes).
docker image prune
"Dangling" image'lar tag'i olmayan, hiçbir container tarafından kullanılmayan image'lardır (images with no tag and not used by any container).
docker image prune -a
Çalışan container'lara bağlı olmayan tüm image'ları siler (removes all images not attached to running containers).
docker rmi IMAGE_ID # Zorla silme (container varsa da sil) docker rmi -f IMAGE_ID # Birden fazla image docker rmi $(docker images -q -f "dangling=true")
Belirli tarihten eski image'ları silme (remove images older than specific date):
docker images --format "{{.ID}} {{.CreatedAt}}" | \
grep "2025-12" | awk '{print $1}' | xargs docker rmi
docker ps -a --filter "status=exited"
docker container prune
Çalışmayan tüm container'ları siler (removes all non-running containers).
# Container durdur ve sil docker stop CONTAINER_ID docker rm CONTAINER_ID # Tek komutla (zorla sil) docker rm -f CONTAINER_ID
# Durdurulmuş olanları sil docker rm $(docker ps -a -q -f status=exited) # HER ŞEYİ sil (çalışan dahil - TEHLİKELİ!) docker rm -f $(docker ps -a -q)
UYARI: Son komut çalışan container'ları da siler! (deletes running containers too!)
Alesta Web projelerinde auto-remove özelliğini kullanıyoruz (we use auto-remove feature in projects):
docker run --rm IMAGE_NAME
--rm parametresi container durduğunda otomatik siler (automatically removes container when stopped).
Volume'ler kalıcı veri içerir! Silmeden önce mutlaka yedek alın (volumes contain persistent data - backup before deleting)!
docker volume ls
docker volume prune
Hiçbir container'a bağlı olmayan volume'leri siler (removes volumes not attached to any container).
docker volume rm VOLUME_NAME # Zorla silme docker volume rm -f VOLUME_NAME
docker volume rm $(docker volume ls -q)
UYARI: Bu komut veritabanı, log dosyaları gibi kalıcı verileri SİLER! (deletes persistent data like databases, logs!)
alestaweb.com projelerinde named volume kullanarak kritik verileri koruyoruz (we use named volumes to protect critical data):
# Named volume (korunur) docker run -v my_database:/var/lib/mysql mysql # Anonymous volume (prune ile silinir) docker run -v /var/lib/mysql mysql
Docker build işlemleri sırasında layer cache oluşturulur. Bu cache büyük yer kaplayabilir (build cache can consume significant disk space).
docker system df -v --format '{{.Type}}\t{{.TotalCount}}\t{{.Size}}\t{{.Reclaimable}}'
docker builder prune
Kullanılmayan build cache'i siler (removes unused build cache).
docker builder prune -a
Tüm build cache'i siler (removes all build cache, even if used recently).
# Son 24 saat dışındaki cache'i sil docker builder prune --filter "until=24h" # Son 7 gün dışındaki cache'i sil docker builder prune --filter "until=168h"
BuildKit kullanarak cache yönetimini optimize edin (optimize cache management with BuildKit):
# BuildKit aktif et export DOCKER_BUILDKIT=1 # Cache boyutunu sınırla docker buildx prune --keep-storage 10GB
macOS'ta Docker Desktop Docker.raw adında bir disk image kullanır. Bu dosya otomatik küçülmez (this file doesn't auto-shrink).
1. Docker.raw Konumu / Location:
~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw
2. Boyutunu Kontrol Et / Check Size:
ls -lh ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw
3. Küçült / Shrink:
# Docker Desktop'ı kapat (quit Docker Desktop) # Disk image'i optimize et docker run --privileged --pid=host docker/desktop-reclaim-space # VEYA Docker Desktop GUI'den: # Preferences > Resources > Advanced > Disk Image Size > Compact
Windows'ta WSL2 kullanıyorsanız (if using WSL2 on Windows):
1. WSL2 Disk Kullanımı / WSL2 Disk Usage:
# PowerShell (Admin) wsl --list --verbose
2. Docker Temizliği Sonrası WSL2 Disk Compaction:
# WSL'i kapat wsl --shutdown # Disk'i optimize et (PowerShell Admin) Optimize-VHD -Path C:\Users\USERNAME\AppData\Local\Docker\wsl\data\ext4.vhdx -Mode Full
3. Docker Desktop WSL Integration:
Docker Desktop > Settings > Resources > WSL Integration > Advanced
Disk limit belirleyebilirsiniz (set disk limit).
Alesta Web deneyimi: macOS'ta Docker.raw dosyası 120GB'den 38GB'ye düştü (Docker.raw shrunk from 120GB to 38GB on macOS).
Cron job ile haftalık otomatik temizlik (weekly auto-cleanup with cron):
# Crontab aç crontab -e # Ekle (Her Pazar 03:00'te çalışır) 0 3 * * 0 docker system prune -a -f >> /var/log/docker-prune.log 2>&1
Image boyutunu küçült (reduce image size):
# Kötü örnek (büyük image) FROM node:18 COPY . . RUN npm install CMD ["node", "app.js"] # İyi örnek (küçük image) FROM node:18 AS builder COPY package*.json ./ RUN npm install COPY . . FROM node:18-alpine COPY --from=builder /app /app CMD ["node", "app.js"]
Alpine kullanarak image'ı %70 küçültebilirsiniz (using Alpine can reduce image by 70%).
Gereksiz dosyaları build'e dahil etmeyin (exclude unnecessary files from build):
# .dockerignore node_modules/ .git/ *.log .env .vscode/ *.md
Eğer /var partitionu küçükse, Docker data dizinini taşıyın (move Docker data directory if /var is small):
# /etc/docker/daemon.json
{
"data-root": "/mnt/docker-data"
}
# Docker restart
sudo systemctl restart docker
Production sunucularda şu stratejiyi uyguluyoruz (we apply this strategy on production servers):
docker system prune -f (otomatik) (weekly auto-prune)docker system prune -a -f (manuel kontrol sonrası) (monthly aggressive prune after manual check)Bu makalede kullanılan bilgiler aşağıdaki güvenilir kaynaklardan alınmıştır (information used in this article is from the following reliable sources):
Alesta Web olarak tüm bilgileri doğruladık ve production sistemlerinde test ettik (we verified and tested all information on production systems).
Artık Docker "no space left on device" hatası geride kaldı. Disk temizliği ve optimizasyon teknikleriyle sisteminizi verimli kullanabilirsiniz! Alesta Web olarak Docker container yönetimi ve DevOps optimizasyonu konularında danışmanlık sağlıyoruz.
Hızlı Özet / Quick Summary:
Faydalı Linkler / Useful Links:
Docker disk yönetimi hakkında sorularınız mı var (do you have questions about Docker disk management)? Alesta Web ekibi DevOps ve container teknolojileri konusunda uzman! alestaweb.com üzerinden bizimle iletişime geçebilirsiniz.
© 2026 AlestaWeb - Tüm hakları saklıdır. Bu makale Alesta Web tarafından hazırlanmıştır.