Docker, uygulamaları izole bir ortamda çalıştırmaya olanak tanıyan bir platformdur. Konteynerler, uygulama bileşenleri ile birlikte gerekli bağımlılıkları içerirken, bu bileşenlerin birbirleriyle iletişim kurmasını sağlamak için ağlar (networks) kullanılır. Docker ağları, konteynerler arasında veri iletimi ve iletişim için kritik öneme sahiptir.
Docker Ağ Türleri
Docker, farklı kullanım senaryolarına uygun üç temel ağ türü sunar: bridge, host ve overlay.
– Bridge Ağı: Docker tarafından varsayılan olarak oluşturulan bu ağ, konteynerlerin birbirleriyle ve dış dünya ile iletişim kurmasını sağlar. Konteynerler, varsayılan bridge ağı içinde kendi IP adreslerini alır.
– Host Ağı: Konteyner, ana makinenin ağ yığınını kullanır. Bu yapılandırma, ağ performansını artırabilir fakat konteynerin ağ geçmişinin dışarıdan erişilebilmesini sağlar.
– Overlay Ağı: Birden fazla Docker daemon’u arasında iletişimi sağlamak için kullanılır. Genellikle konteynerlerin birden fazla ana makinede çalıştığı dağıtık uygulamalarda tercih edilir.
Ağ Yönetimi Komutları
Docker ağlarını yönetmek için birkaç temel komut bulunmaktadır:
– Ağ Listeleme: Tüm mevcut Docker ağlarını listelemek için `docker network ls` komutu kullanılır. Bu komut, ağ adı, türü ve ID’si gibi bilgileri sağlar.
– Ağ Oluşturma: Yeni bir ağ oluşturmak için `docker network create ` kullanılır. Bu komutla beraber `–driver` bayrağı ile ağın tipi belirlenebilir.
– Ağ Silme: Gereksiz veya kullanılmayan bir ağı silmek için `docker network rm ` komutu kullanılır. Eğer ağın üzerinde herhangi bir konteyner varsa, silme işlemi başarısız olacaktır.
– Ağa Bağlama: Bir konteyneri belirli bir ağa bağlamak için `docker network connect
– Ağdan Çıkarma: Bir konteyneri bir ağdan çıkarmak için `docker network disconnect
Ağ Özellikleri ve Yapılandırma
Docker ağları, belirli özellikler ve yapılandırma seçenekleri ile özelleştirilebilir. Bu özellikler arasında IP aralığı, alt ağ maskeleri, DNS ayarları ve ağ sürücüsü bulunmaktadır. Örneğin, bir bridge ağı oluşturulurken, özel bir IP aralığı tanımlamak için `–subnet` bayrağı kullanılabilir:
“`
docker network create –subnet=192.168.1.0/24
“`
DNS ayarları belirlemek için `–dns` bayrağı kullanılabilir. Bu sayede konteynerler, belirli bir DNS sunucusunu kullanarak ad çözümleme yapar.
Docker Compose ile Ağ Yönetimi
Docker Compose, birden fazla konteynerin oluşturulmasını ve yönetilmesini kolaylaştıran bir araçtır. Docker Compose ile ağ yönetimi, `docker-compose.yml` dosyasında tanımlanabilir. Aşağıda örnek bir yapılandırma bulunmaktadır:
“`yaml
version: ‘3’
services:
web:
image: nginx
networks:
– webnet
database:
image: postgres
networks:
– webnet
networks:
webnet:
“`
Bu yapılandırmada, hem “web” hem de “database” servisleri aynı “webnet” ağına bağlıdır. Docker Compose ile konteynerler arasında iletişim kurmak kolaylaşır.
Ağ İzleme ve Hata Ayıklama
Docker ağlarının izlenmesi, uygulama performansının ve güvenliğinin sağlanması açısından önemlidir. Ağ trafiğini izlemek için çeşitli araçlar kullanılabilir. Ayrıca, ağ hatalarını tespit etmek için `docker network inspect ` komutu kullanılabilir. Bu komut, belirli bir ağ hakkında detaylı bilgi sağlar; bağlı konteynerler, IP adresleri ve diğer özellikler görüntülenebilir.
Güvenlik
Docker ağlarının güvenliği, ağ yapılandırması kadar önemlidir. Ağ üzerinde çalışan konteynerlerin birbirine olan erişim kontrollerinin sağlanması, özellikle hassas verilerin işlendiği durumlarda kritik öneme sahiptir. Ağ izole edilerek, yalnızca gerekli hizmetlerin birbirine erişimi sağlanmalıdır. Ayrıca, konteyner bazında güvenlik duvarı kuralları yapılandırılarak, dışarıdan gelebilecek tehditlere karşı önlem alınabilir.
Docker ağlarının yönetimi, uygulama mimarisinin önemli bir parçasıdır ve doğru yapılandırma ve izleme ile uygulamaların performansını ve güvenliğini artırmak mümkündür. Ağların izlenmesi ve yapılandırılması, modern uygulama geliştirme süreçlerinde kritik bir rol oynamaktadır. Dolayısıyla, Docker ağ yönetimi, konteyner tabanlı uygulamaların etkinliği için vazgeçilmez bir bileşen olarak öne çıkar.