Container’ların ağ üzerindeki davranışlarını kontrol etmek için Docker farklı türde network sürücüleri sunar. Bu sürücüler, container’ların hem birbirleriyle hem de dış kaynaklarla iletişim kurma şeklini belirler.
Her sürücü tipi, container’ların dahil olacağı ağı, IP yapılandırmasını ve erişim türünü belirler. İzole sistemlerde Bridge veya None tercih edilirken, geniş erişim için Host veya Overlay sürücüleri kullanılır.
Bridge Driver (Köprü) Ağı
Bridge , Docker’ın varsayılan olarak tanımladığı ağ sürücüsüdür ve container’lar arasında iletişimi sağlar. Aynı host üzerinde çalışan container’lar, bu köprü aracılığıyla birbirine bağlanabilir ancak dış ağlarla iletişimleri tamamen kısıtlanır.
Docker sistemi, docker0 isimli sanal bir köprü oluşturur ve her bir container’a bu köprü üzerinden bir IP adresi atar. Eğer container dış ağa erişim gerektiriyorsa, bu bağlantı NAT mekanizması aracılığıyla gerçekleştirilir.
Bu ağ türü, özellikle Ubuntu Docker ortamlarında yaygın olarak tercih edilir çünkü varsayılan yapılandırma çoğu senaryoda ek bir düzenleme gerektirmeden kullanılabilir.
docker run -d --name web1 --network bridge nginx
Bridge yapısı, küçük ölçekli projeler ya da tek bir host üzerinde çalışan uygulamalar için son derece yeterlidir. Ancak farklı makinelerde yer alan container’lar arasında doğrudan bir bağlantı kurulması mümkün değildir.

Host Ağı
Host ağı, container ile host sistemi arasındaki ağ katmanını ortadan kaldıran bir sürücü türüdür. Bu modda container, doğrudan host’un IP adresini kullanır ve ek bir sanal ağ oluşturulmaz. Bu durum, yüksek performans ve düşük gecikme süresi gerektiren uygulamalar için avantaj sağlar.
docker run -d --network host nginx
Bu ağ modunun avantajı maksimum performans ve düşük gecikme değerleridir. Fakat dezavantajı, izolasyonun ortadan kalkması nedeniyle güvenlik risklerinin artmasıdır.

None Driver (Ağsız)
None ağı, container’ı tamamen dış bağlantılardan ayırır ve yalnızca kendi içinde çalışmasına izin verir. Bu modda container’ın herhangi bir harici ağa erişimi bulunmaz.
Bu yapı, güvenlik öncelikli test senaryolarında veya özel ağ yapılandırmaları gerektiren ortamlarda kullanılabilir.
docker run -d --network none alpine sleep 1000
Avantajı, tam izolasyon sağlamasıdır. Ancak dezavantajı, dış ağlarla veya diğer container’larla iletişimin mümkün olmamasıdır.

Overlay Driver (Ağı)
Overlay ağı, birden fazla host üzerinde çalışan container’lar arasında ağ iletişimi kurulmasını sağlar. Bu tür ağ, özellikle Docker Swarm veya Kubernetes gibi container orkestrasyon araçlarında tercih edilir.
VXLAN teknolojisi sayesinde farklı fiziksel makinelerde bulunan container’lar, aynı yerel ağda bulunuyormuş gibi birbirleriyle iletişim kurabilir.
docker network create -d overlay my_overlay
Avantajı, çoklu host ortamlarında ağ yönetimini kolaylaştırmasıdır. Dezavantajı ise, ek yapılandırma gereksinimleri ve orkestrasyon aracına ihtiyaç duymasıdır.
Macvlan Ağı
Macvlan ağı,, her container’a benzersiz bir MAC adresi atayarak onu ağ üzerinde bağımsız bir fiziksel cihaz gibi gösterir. Bu sayede container, switch veya router tarafından doğrudan tanınabilir hale gelir.
docker network create -d macvlan \
--subnet=192.168.1.0/24 \
--gateway=192.168.1.1 \
-o parent=eth0 macvlan_net
Avantajı, container’lara gerçek ağ kimliği ve yüksek performans kazandırmasıdır. Dezavantaj olarak, yapılandırmanın karmaşık olması ve dinamik IP yönetiminin zorlaşması gösterilebilir.

IPvlan Ağ
IPvlan sürücüsü, Macvlan’a benzer bir mantıkla çalışır; ancak her container’a ayrı MAC adresi atamak yerine IP düzeyinde iletişim sağlar. Bu yöntem, ağ trafiğini sadeleştirir ve yönlendiriciler ü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önetiminin basitleşmesi ve router üzerindeki yükün azalmasıdır. Dezavantajı ise broadcast trafiğinin sınırlı olması ve bazı durumlarda izolasyon eksikliği yaşanabilmesidir.
Docker network driver çeşitleri, container’lar arasındaki iletişimin nasıl organize edildiğini anlamamızı sağlar. Ancak bu sürücülerin asıl gücü, özel ağ (custom network) yapılandırmaları oluşturulduğunda ortaya çıkar.
Birden fazla container’ı birlikte çalıştırmak ve yalnızca belirli servislerin birbirleriyle iletişim kurmasını istiyorsak, özel ağlar tanımlamak gerekir. Bu sayede daha güvenli ve ölçeklenebilir Docker ağ altyapıları elde edilir.
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
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
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
komutunu çalıştırabilirsin.
Bridge ağı ile dış dünyaya nasıl erişilir?
Container’lar dış ağa NAT (Network Address Translation) üzerinden çıkar. Bu sayede internet erişimi olur, ancak dışarıdan container’a doğrudan erişim engellenir.
Bridge ağı hangi durumlarda yetersiz kalır?
Birden fazla fiziksel host arasında iletişim gerekiyorsa Bridge yeterli olmaz. Bu tür senaryolarda Overlay ağı kullanılmalıdır.
Bridge ağıyla container’lar birbirine bağlanmıyorsa ne yapılmalı?
Böyle bir durumda ağ tanımları çakışıyor olabilir.
Ağı kontrol etmek için:
docker network inspect bridge
komutunu kullan. Eğer hata “network not found” şeklindeyse, çözümünü burada bulabilirsiniz.
Docker ‘network not found’ Hatası Nasıl Giderilir?
Docker ağ yapılandırmalarını denemeden önce neye dikkat etmeliyim?
Öncelikle sisteminde Docker ve Docker Compose’un doğru şekilde kurulu olması gerekir.
Kurulum adımları için şu rehberden yararlanabilirsiniz.
Windows, Linux ve macOS’ta Docker ve Docker Compose Kurulumu