Docker Temizleme ve Optimizasyon
Kullanılmayan Docker imajlarını, containerları, volume'leri ve network'leri temizleyerek disk alanı kazandıran script.
Yayınlanma: 01.03.2024
Detaylı Bilgi
Bu script, Docker ortamınızdaki kullanılmayan kaynakları temizleyerek disk alanı kazandırır. Docker kullanımı zamanla çok fazla disk alanı kaplayabilir ve bu script ile düzenli temizlik yapabilirsiniz.
Script Ne İşe Yarar?
Bu script, Docker'ın disk kullanımını optimize eder:
- Durdurulmuş container'ları siler
- Kullanılmayan (dangling) imajları temizler
- Kullanılmayan volume'leri kaldırır
- Kullanılmayan network'leri temizler
- Build cache'i temizler (isteğe bağlı)
Neden Kullanmalısınız?
Docker, zamanla çok fazla disk alanı kullanabilir:
- Disk Tasarrufu: Gigabaytlarca alan kazanabilirsiniz
- Performans: Daha az kaynak kullanımı
- Düzen: Kullanılmayan kaynakları temizler
- Maliyet: Bulut sunucularda daha düşük maliyet
Nasıl Kullanılır?
Adım Adım Kullanım Kılavuzu
1. Script Dosyasını Oluşturun
nano docker_cleanup.sh
2. Çalıştırılabilir Yapın
chmod +x docker_cleanup.sh
3. Scripti Çalıştırın
./docker_cleanup.sh
Otomatik Temizlik
# Cron job ile haftalık temizlik
0 2 * * 0 /path/to/docker_cleanup.sh Gereksinimler
Gereksinimler
- Docker: Docker kurulu ve çalışıyor olmalı
- Docker Erişimi: Docker komutlarını çalıştırma yetkisi
Kullanım Senaryoları
Kullanım Senaryoları
1. Düzenli Bakım
Haftalık veya aylık olarak Docker kaynaklarını temizleyin.
2. Disk Doluluğu
Disk alanı dolduğunda hızlıca temizlik yapın.
3. Production Ortamları
Production sunucularda düzenli temizlik yaparak performansı koruyun.
Örnekler
Kullanım Örnekleri
Örnek 1: Temel Temizlik
./docker_cleanup.sh
Örnek 2: Tam Temizlik (Dikkatli!)
docker system prune -a --volumes Kod
#!/bin/bash
# Docker Cleanup Script
echo "======================================"
echo " DOCKER CLEANUP UTILITY"
echo "======================================"
echo ""
if ! docker info > /dev/null 2>&1; then
echo "Error: Docker is not running!"
exit 1
fi
echo "Current Docker disk usage:"
docker system df
echo ""
echo "--- Cleaning stopped containers ---"
STOPPED=$(docker ps -aq -f status=exited | wc -l)
if [ $STOPPED -gt 0 ]; then
docker rm $(docker ps -aq -f status=exited)
echo "✓ Removed $STOPPED stopped containers"
else
echo "No stopped containers to remove"
fi
echo ""
echo "--- Cleaning dangling images ---"
DANGLING=$(docker images -f dangling=true -q | wc -l)
if [ $DANGLING -gt 0 ]; then
docker rmi $(docker images -f dangling=true -q)
echo "✓ Removed $DANGLING dangling images"
else
echo "No dangling images to remove"
fi
echo ""
echo "--- Cleaning unused volumes ---"
docker volume prune -f
echo "✓ Unused volumes cleaned"
echo ""
echo "--- Cleaning unused networks ---"
docker network prune -f
echo "✓ Unused networks cleaned"
echo ""
read -p "Clear build cache? (y/n): " CLEAR_CACHE
if [ "$CLEAR_CACHE" = "y" ]; then
docker builder prune -f
echo "✓ Build cache cleared"
fi
echo ""
echo "======================================"
echo "Cleanup completed!"
echo ""
echo "New Docker disk usage:"
docker system df
echo ""
Kullanım
chmod +x docker_cleanup.sh
./docker_cleanup.sh
# Tam temizlik (dikkatli!)
docker system prune -a --volumes
Sorun Giderme
Sorun Giderme
Problem: "Docker is not running"
Çözüm: Docker servisini başlatın:
sudo systemctl start docker