Docker “all predefined address pools have been fully subnetted” Hatası Çözüm Rehberi

Sorun Nedir?

Docker ile yeni bir ağ (network) oluşturmaya çalıştığınızda şu hatayı alıyorsanız:

failed to create network kasm_default: Error response from daemon: all predefined address pools have been fully subnetted

Bu hata, Docker’ın varsayılan IP adres havuzlarının tamamen tükendiğini gösterir.

Sorunun Sebepleri

  1. Birikmiş eski Docker network’leri – Kullanılmayan ancak silinmemiş network’ler havuzu tüketir
  2. Docker’ın varsayılan IP havuzu tükenmiştir – Her yeni network varsayılan olarak /20 (4.094 IP adresi) boyutunda oluşur ve bu hızla havuz dolar
  3. Aşırı sayıda Docker Compose projesi – Her proje kendi network’ünü oluşturur

Çözüm Adımları

1. Mevcut Network’leri Listeleyin ve Temizleyin

# Tüm network'leri listele
docker network ls

# Kullanılmayan network'leri sil
docker network prune

# Daha agresif temizlik (tüm kullanılmayan network'leri siler)
docker network prune -a

2. Docker Yapılandırma Dosyasını Kontrol Edin

# Docker dizinini kontrol et
ls -l /etc/docker/

Eğer daemon.json dosyası yoksa (bu normaldir), siz oluşturmanız gerekecektir.

3. default-address-pools Ayarlarını Yapılandırma

Docker’ın varsayılan IP havuz boyutunu daha makul bir değere düşürmek sorunu kalıcı olarak çözecektir.

/etc/docker/daemon.json dosyasını oluşturun veya düzenleyin:

sudo nano /etc/docker/daemon.json

Aşağıdaki yapılandırmayı ekleyin:

{
  "log-level": "warn",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "5"
  },
  "default-address-pools": [
    {
      "base": "172.16.0.0/12",
      "size": 24
    }
  ]
}

Açıklamalar:

  • "base": "172.16.0.0/12" – Docker’ın kullanacağı IP aralığı (172.16.0.0 – 172.31.255.255)
  • "size": 24 – Her network için /24 (254 kullanılabilir IP) – ev kullanımı için fazlasıyla yeterli

⚠️ Eğer ev ağınız 192.168.x.x aralığını kullanıyorsa, base olarak 172.16.0.0/12 kullanmak çakışmayı önler.

4. Docker Servisini Yeniden Başlatın

# Docker servisini yeniden başlat
sudo systemctl restart docker

# Durumunu kontrol et
sudo systemctl status docker

# Hata olup olmadığını kontrol et
journalctl -u docker -n 50

Önleyici Tedbirler

  • Düzenli olarak docker network prune komutunu çalıştırın
  • Gereksiz container ve network’leri hemen silin
  • Docker Compose projelerinde network: external kullanarak network paylaşımı yapın
  • Log boyutlarını sınırlandırın (yukarıdaki yapılandırmada yapıldı)

Alternatif Çözüm

Eğer hala sorun yaşıyorsanız, daha büyük bir IP havuzu tanımlayabilirsiniz:

{
  "default-address-pools": [
    {
      "base": "10.0.0.0/8",
      "size": 24
    }
  ]
}

Bu, 10.x.x.x aralığının tamamını (16 milyon+ IP) kullanıma açar.


https://stackoverflow.com/a/43689496

Gürkan ATILGAN

Gürkan ATILGAN

Müzikle uğraşır, fotoğraf çeker, teknolojiyle yakından ilgilenirim.

More Posts - Website

Follow Me:Add me on X

Bir yanıt yazın 0

Your email address will not be published. Required fields are marked *