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

Etiketler

docker cleanup temizlik disk alanı container