Docker Network Driver Tipleri
Docker, containerların bağlantısını sağlamak için birçok araç sunar. Bu araçlar arasında en önemlilerinden biri "Docker Network" olmaktadır. Docker Network, containerlar arasında haberleşmeyi sağlamak için kullanılır. Bu sayede containerlar, aynı ağ üzerinde oldukları takdirde birbirleriyle haberleşebilirler.
Docker network, Docker container'ları arasında ağ bağlantısı kurmanıza olanak sağlar. Docker, container'lar için farklı ağ tiplerini destekler. Bu ağ tipleri, container'ların birbirleriyle nasıl iletişim kuracağını belirler. Docker network tipleri şunlardır:
- bridge
- host
- none
- overlay
- macvlan
- ipvlan
Şimdi bu network tiplerinden en çok kullanılanların detaylarını inceleyelim.
1. Bridge Driver
Bridge newtork tipi, Docker container'larının bulunduğu host'a bağlı olan bir ağ oluşturur. Bu ağ üzerinden container'lar birbirleriyle iletişim kurabilir ve host'un ağ bağlantısını kullanarak dış ağlara da bağlanabilir. Bu ağ çeşidini kullanarak, container'ların host'a bağlı bir ağda çalışmasını sağlayabilirsiniz.

Eğer yeni bir bridge tipinde network oluşturursanız, belirlediğiniz isimde yeni bir adapter da oluşturulur. Ve tüm bridge networkler birbirleriyle izolasyon sağlarlar.

docker0
hariç, kendi oluşturduğunuz bridge network'e eklenen tüm container'lar IP adresi yerine container isimleriyle birbirleriyle haberleşebilirler. Örneğin odin isimli container da ping loki
komutu başarıyla çalışır.2. Host Driver
Host newtork tipi, Docker container'larının bulunduğu host'un ağına direkt olarak bağlanmasını sağlar. Bu ağ çeşidini kullanarak, container'lar host'un ağına direkt olarak bağlanarak iletişim kurabilir. Bu sayede, container'lar host'un ağını kullanarak dış ağlara da bağlanabilir.

Host network'üne atanan containerlar, tıpkı o host cihazına kurulmuş bir uygulama gibi çalışır. Bu containerlar için herhangi bir port expose etmenize gerek kalmaz ve host makinasının IP adresi ile containerlarınıza bağlanabilirsiniz.
3. None Driver
None newtork tipi, Docker container'larına hiçbir ağ bağlantısı sağlamaz. Bu ağ çeşidini kullanarak, container'ların ağ bağlantısını kesebilir ve container'ların ağ üzerinden iletişim kurmasını engelleyebilirsiniz.

4. Overlay Driver
Overlay network tipi, birden fazla Docker daemon arasında ağ bağlantılarını sağlamak için kullanılan bir ağ türüdür. Bu tür ağlar, Docker swarm modunda çalışan veya birden fazla fiziksel makine arasında yayılmış olan containerlar arasında iletişimi sağlar. Overlay network, containerların fiziksel makine sınırlarını aşmasını ve böylece birbirleriyle doğrudan iletişim kurmasını sağlar. Bu, containerlar arasında daha esnek ve skalable bir ağ topolojisi oluşturmasına olanak tanır.
5. MacVLAN Driver
MacVLAN network, Docker containerlarının yerel ağdaki gerçek IP adresleri kullanarak iletişim kurmasını sağlar. Bu tür ağlar, containerların gerçek ağda yer alan diğer cihazlar gibi görünmelerini ve aynı zamanda host makine ve diğer containerlar arasında iletişim kurmalarını sağlar. Bu tür ağlar, containerların yerel ağda gerçek bir fiziksel cihaz gibi davranmalarını sağlar ve böylece özellikle, üretim ortamlarında kullanılması düşünülen uygulamalar için uygun hale gelir.

6. IPVLAN Driver
IPVLAN ağlar, MacVLAN ağlarına benzer şekilde çalışır ancak IPVLAN aracılığıyla containerların yerel ağda gerçek bir cihaz gibi davranması sağlanırken MacVLAN ağları aracılığıyla containerlar yerel ağda gerçek bir mac adresi kullanır.
1. Docker Network Nasıl Oluşturulur?
Docker Network, iki çeşit şekilde oluşturulabilir:
- Docker CLI aracılığıyla
- Docker Compose aracılığıyla
1.1. Docker CLI Aracılığıyla Network Oluşturmak
Docker Network oluşturmak için Docker CLI aracılığıyla kullanabileceğiniz komutlar şunlardır:
docker network create [NETWORK_NAME]
Bu komut, belirtilen isimde yeni bir ağ oluşturur. Network tipi belirtmeden oluşturduğunuz ağlar varsayılan olarak bridge tipini kullanırlar.
docker network create --driver host [NETWORK_NAME]
Eğer oluşturacağınız ağın tipini değiştirmek istiyorsanız --driver parametresi ile ap tipini belirleyebilirsiniz.
docker network ls
Bu komut, oluşturulmuş olan tüm ağları listeler.
docker network inspect [NETWORK_NAME]
Bu komut, belirtilen ağ hakkında detaylı bilgi verir.
docker network rm [NETWORK_NAME]
Bu komut, belirtilen ağı siler.
Ayrıca, network oluştururken IP aralıklarını kendiniz tanımlayabilirsiniz. Aşağıdaki örnek --subnet
, --ip-range
ve --gateway
parametrelerini kullanarak özel bir ağ oluşturur.
docker network create --driver bridge --subnet=10.0.0.0/24 --ip-range=10.0.0.0/28 --gateway=10.0.0.1 [NETWORK_NAME]
1.2. Docker Compose Aracılığıyla Network Oluşturmak
Docker Compose aracılığıyla oluşturulan ağlar, docker-compose.yml
dosyası içerisinde tanımlanır. Aşağıda, docker-compose.yml
dosyası içerisinde ağ tanımlaması yapılmış bir örnek veriyorum:
version: '3'
networks:
mynet:
driver: bridge
Bu örnekte, mynet
isminde bir ağ tanımlanmıştır ve ağ tipi olarak bridge
kullanılmıştır. Bu ağ, docker-compose up
komutu ile oluşturulur ve containerlar, bu ağ üzerinde çalışırlar.
2. Bir Container Docker Network'e Nasıl Eklenir ve Çıkarılır?
Bir container Docker network'e eklemek için, "docker network connect
" komutu kullanılır. Örneğin, aşağıdaki komut "my_network" adlı network'e "my_container" adlı container'ı ekler:
docker network connect my_network my_container
Ayrıca run komutunun sırasında --network parametresi ile container oluşturulurken aynı anda network'e eklenebilir. Örnek olarak :
docker run --network=my_network -it --name my_container ubuntu /bin/bash
Bu komut ile "my_network" adlı network'e "my_container" adlı container oluşur ve aynı anda network'e eklenir.
Benzer şekilde, container bir network'ten çıkarılmak istenirse "docker network disconnect
" komutu kullanılabilir.
docker network disconnect my_network my_container
Docker serimizin sıradaki yazısı için aşağıdaki bağlantıyla devam edebilirsiniz.