Docker Network Türleri ve Ağ Yönetimi
Docker, container’lar arasındaki iletişimi düzenlemek ve harici ağlara erişimi yönetmek için çeşitli ağ sürücüleri (network drivers) kullanır. Bu sürücüler, sistemin ağ topolojisini belirleyen temel bileşenlerdir.
İleri düzey yapılandırmalara başlamadan önce Docker’ın doğru biçimde yüklendiğini doğrulamak gerekir. Henüz kurulumu tamamlamadıysanız, “Docker Kurulumu” rehberimizden adımları takip edebilirsiniz.
Her bir sürücü, container’ların IP adreslerini, bağlı oldukları ağı ve iletişim protokolünü kontrol eder. Bu sayede bazı sürücüler tam izolasyon sağlarken, diğerleri esnek bağlantı imkânı sunar.
Bridge Driver (Köprü) Ağı
Bridge, Docker tarafından varsayılan olarak atanan ağ sürücüsüdür ve container’ların kendi aralarında iletişim kurmasına olanak tanır. Aynı host üzerindeki container’lar bu ağ aracılığıyla haberleşebilir, ancak dış ağlardan tamamen izole biçimde çalışırlar.
Docker, docker0 isimli sanal bir köprü oluşturur ve her container’a bu köprü üzerinden bir IP adresi atar. Container’ların dış ağla bağlantı kurması gerektiğinde ise, veri trafiği NAT üzerinden yönlendirilir.
Bu ağ tipi, özellikle Ubuntu Docker kurulumu sonrasında sıklıkla kullanılır; çünkü varsayılan yapılandırma çoğu kullanım senaryosunda herhangi bir değişiklik gerektirmeden doğrudan çalışır.
docker run -d --name web1 --network bridge nginx
Bridge yapısı, küçük çaplı projelerde veya tek bir host üzerinde çalışan uygulamalarda fazlasıyla yeterlidir. Ancak farklı makinelerdeki container’lar arasında doğrudan iletişim kurulması mümkün değildir.

Host Ağı
Host network sürücüsü, container ile ana sistem arasında yer alan ağ sınırını ortadan kaldırır. Bu mod etkinleştirildiğinde container, doğrudan host’un IP adresini kullanır ve ek bir sanal ağ katmanı oluşturulmaz. Bu özellik, yüksek ağ performansı ve düşük gecikme gerektiren uygulamalarda büyük avantaj sağlar.
docker run -d --network host nginx
Bu modun en önemli avantajı maksimum performans ve minimum gecikme sunmasıdır. Ancak dezavantaj olarak, izolasyonun ortadan kalkması sebebiyle güvenlik risklerinin artması sayılabilir.

None Driver (Ağsız Mod)
None ağı, container’ı tamamen dış bağlantılardan ayırır ve yalnızca kendi içerisinde çalışmasını sağlar. Bu ağ modunda container’ın hiçbir harici ağ erişimi bulunmaz.
Bu tür bir yapılandırma, genellikle özel ağ konfigürasyonlarına ihtiyaç duyan test ortamlarında veya güvenlik temelli projelerde tercih edilir.
docker run -d --network none alpine sleep 1000
Avantajı tam izolasyon sağlamasıdır. Buna karşılık dezavantajı, dış ağ ya da diğer container’larla iletişim kurulamamasıdır.

Overlay Driver (Ağı)
Overlay network, birden fazla host üzerinde çalışan container’lar arasında iletişim kurulmasını sağlar. Bu ağ türü genellikle Docker Swarm ya da Kubernetes gibi orkestrasyon sistemlerinde tercih edilir.
VXLAN tünelleme teknolojisi sayesinde farklı fiziksel makinelerdeki container’lar, aynı yerel ağda bulunuyormuş gibi haberleşebilir.
docker network create -d overlay my_overlay
Avantajı, çoklu host ortamlarında ağ yönetimini oldukça kolay hale getirmesidir. Dezavantajı ise, ek yapılandırma adımları ve orkestrasyon araçlarına gereksinim duymasıdır.
Macvlan Ağı
Macvlan ağı,, her container’a fiziksel bir MAC adresi atayarak onu ağ üzerinde bağımsız bir cihaz gibi görünür hale getirir. Böylece container, switch veya router tarafından fiziksel bir makineymiş gibi tanınabilir.
docker network create -d macvlan \
--subnet=192.168.1.0/24 \
--gateway=192.168.1.1 \
-o parent=eth0 macvlan_net
Bu yapı, yüksek performans ve gerçek ağ kimliği sunması açısından avantajlıdır. Ancak dezavantaj olarak, kurulumun karmaşık olması ve dinamik IP yönetiminin zorluk oluşturması gösterilebilir.

IPvlan Ağı
IPvlan ağı, Macvlan sürücüsüne benzer şekilde çalışır, ancak her container’a ayrı bir MAC adresi vermek yerine IP düzeyinde iletişim kurar. Bu yapı, ağ trafiğini daha sade hale getirir ve router üzerindeki yükü azaltır.
docker network create -d ipvlan \
--subnet=10.0.0.0/24 \
--gateway=10.0.0.1 \
-o parent=eth0 ipvlan_net
Avantajı, ağ yönetimini kolaylaştırması ve yönlendirici üzerindeki yükü azaltmasıdır. Dezavantajı ise broadcast trafiğinin sınırlı olması ve bazı senaryolarda izolasyon eksikliği yaşanabilmesidir.
Network sürücüleri, Docker’ın container’lar arasındaki iletişimi nasıl organize ettiğini anlamamıza yardımcı olur. Ancak bu sürücülerin asıl gücü, özel ağ yapılandırmaları (custom networks) oluşturulduğunda ortaya çıkar.
Birden fazla container’ı birlikte çalıştırmak ve yalnızca belirli servislerin iletişim kurmasını sağlamak istiyorsak, özel ağ tanımlamaları oluşturmak gerekir. Bu sayede daha güvenli, ölçeklenebilir ve kontrollü bir Docker ağı elde edilebilir.
Docker’da Özel Ağ (Custom Network) Oluşturma
Docker bize varsayılan ağ yapısını verse de, özel network’ler oluşturarak çok daha kontrollü yapılar kurabiliriz. Böylece container gruplarını birbirinden ayırabilir, sadece belirli servislerin iletişim kurmasını sağlayabiliriz.
Özel Ağ Oluşturalım
docker network create --driver bridge my_bridge
Container’larımızı bu özel ağa bağlamak için aşağıdaki komutları kullanalım.
docker run -d --name web --network my_bridge nginx
docker run -it --network my_bridge alpine ping web
Özel ağlar oluştururken bazen Docker, tanımlanan ağı bulamayabilir ve “network not found” hatası verebilir. Bu tür durumlarda ağların nasıl yeniden tanımlanacağını öğrenmek için Docker ‘network not found’ Hatası Nasıl Giderilir? rehberine göz atabilirsiniz.
Driver’lara Göre İzolasyon Mantığı
| Driver | İzolasyon Seviyesi | Açıklama |
|---|---|---|
| Bridge | Orta | Aynı host’taki container’lar haberleşebilir. |
| Host | Yok | Container, host’un IP’sini kullanır. |
| Overlay | Yüksek | Farklı host’lar arası iletişim. |
| Macvlan | Düşük | Container fiziksel ağda görünür. |
| None | Tam | Dış bağlantı tamamen kapalıdır. |
Tam İzole Ağlar
Eğer container’ların dış dünyayla hiçbir şekilde iletişim kurmasını istemiyorsak, --internal seçeneğini kullanarak tamamen izole bir ağ oluşturabiliriz.
docker network create --driver bridge --internal kapali_ag
Bu yapı genellikle yalnızca sistem içi çalışan veritabanı veya arka plan servisleri için tercih edilir.
Bir Container’ı İki Ağa Bağlamak
Bazen bir container’ın hem ön yüz (frontend) hem de arka uç (backend) sistemlerle iletişim kurması gerekebilir.
docker network create on_yuz_ag
docker network create arka_uc_ag
docker run -d --name api --network arka_uc_ag nginx
docker network connect on_yuz_ag api
Sık Sorulan Sorular
Bridge ağı ile Overlay ağı arasındaki fark nedir?
Bridge ağı yalnızca aynı host üzerindeki container’lar arasında iletişim sağlar. Overlay ağı ise birden fazla host arasında ağ iletişimini mümkün kılar.
Ubuntu Docker ortamında köprü ağı nasıl kullanılır?
Ubuntu sisteminde Docker kurulunca otomatik olarak docker0 köprüsü oluşturulur.
Yeni bir ağ eklemek istersen:
docker network create --driver bridge my_bridge
Docker network driver seçimi performansı nasıl etkiler?
Her sürücü farklı amaç için tasarlanmıştır. Bridge orta seviye performans sunarken, Host ve Macvlan sürücüleri daha düşük gecikme sağlar. Overlay ise çoklu host ortamları için optimize edilmiştir.
Bir container aynı anda birden fazla Docker ağına bağlanabilir mi?
docker network connect komutu ile bir container’ı birden fazla ağa dahil edebilirsiniz. Böylece hem frontend hem backend gibi farklı ağlarda aynı anda aktif olabilir.
