Docker Nedir?
Docker, uygulamaların taşınabilirliğini ve yönetimini kolaylaştıran bir konteynerleştirme platformudur. Uygulamalar, işletim sisteminin üzerinde değil, konteyner adı verilen hafif sanal ortamlarda çalışır. Bu sayede, uygulamalar farklı ortamlarda (geliştirme, test, üretim) tutarlılık gösterir. Docker, yazılım geliştirme süreçlerini hızlandırmak ve uygulama dağıtımını basitleştirmek amacıyla yaygın olarak kullanılmaktadır.
Network Konfigürasyonu
Docker, konteynerler arasında iletişimi sağlamak için farklı ağ modları sunar. Bu modlar arasında bridge, host ve overlay ağları bulunur. Bridge ağı, varsayılan ağ modudur ve en yaygın kullanım senaryolarından birini temsil eder. Docker, konteynerlere izole bir ağ ortamı sunarak, bu konteynerlerin birbirleriyle iletişim kurmasını sağlar.
Bridge Network Nedir?
Bridge network, Docker ile sağlanan temel ağ yapılarından biridir. Eğer bir konteyner oluşturulursa ve herhangi bir ağ yapılandırması belirtilmezse, bu konteyner otomatik olarak varsayılan bridge ağına bağlanır. Bu yapı, birden fazla konteynerin birbirleriyle iletişim kurmasını sağlar ve aynı zamanda host sistemi ile konteynerlerin bağımsız birer ağ katmanı oluşturmasına olanak tanır. Her bir konteyner, kendi IP adresine sahip olur ve diğer konteynerlerle iletişim kurarken bu IP adreslerini kullanır.
Bridge Network Oluşturma
Bir bridge ağı oluşturmak için Docker CLI kullanarak basit bir komut çalıştırmak yeterlidir. Aşağıdaki komut, yeni bir bridge ağı oluşturur:
“`
docker network create –driver bridge my_bridge_network
“`
Bu komut, “my_bridge_network” adında yeni bir bridge ağı oluşturur. Bu ağda konteynerler oluşturulup çalıştırılabilir. Eğer ağ oluşturulmuşsa, mevcut ağlar arasında kolayca geçiş yapılabilir.
Konteynerlerin Bridge Ağına Bağlanması
Oluşturulan bridge ağına konteynerler eklenmek isteniyorsa, ağı oluştururken “–network” parametresi kullanılabilir. Aşağıdaki örnek, bir konteynerin “my_bridge_network” ağına nasıl bağlanacağını göstermektedir:
“`
docker run -d –name my_container –network my_bridge_network nginx
“`
Bu komut, Nginx web sunucusu çalıştıran “my_container” adında bir konteyner oluşturur ve bu konteyneri “my_bridge_network” ağına bağlar. Oluşturulan konteyner, tanımlı IP aralığında bir IP alır ve bu ağ üzerinden diğer konteynerlerle iletişim kurabilir.
Bridge Ağı Üzerinde İletişim
Birden fazla konteyner oluşturulup aynı bridge ağına bağlandığında, konteynerler arasında iletişim sağlamak oldukça basittir. Örneğin, başka bir konteyner “my_container” ile iletişim kuracaksa, bu konteynerin adını veya IP adresini kullanarak iletişim kurabilir. Örnek bir komut aşağıdaki gibidir:
“`
docker run -it –network my_bridge_network –name other_container alpine sh
“`
Bu komut, “other_container” adıyla bir Alpine konteyneri oluşturur ve “my_bridge_network” ağına bağlar. Bu konteyner içerisinde, “my_container” ile iletişim kurmak için, DNS adı olan “my_container” kullanılabilir. Örnek olarak, “ping my_container” komutu ile “my_container” ağa bağlanmış olduğu için erişilebilir.
IP Adresleri ve DNS
Docker bridge ağı oluşturulduğunda, bu ağda her konteynerin kendisine atanmış bir IP adresi vardır. Bu IP adresleri, Docker tarafından otomatik olarak atanır ve ağ içerisinde konteynerlerin birbirleri ile iletişim kurmalarını sağlar. Ayrıca, Docker, konteynerlerin isimlerini kullanarak erişimi kolaylaştıran bir DNS çözümleme mekanizması içerir. Bu sayede, diğer konteynerler, IP adreslerini hatırlamak yerine isimleriyle birbirlerine ulaşabilir.
Ağ Yapılandırmalarının Yönetimi
Docker ağları, Docker CLI kullanılarak yönetilebilir. Ağın detaylarına erişmek ve içerdiği konteynerlerin listesini görmek için aşağıdaki komut kullanılabilir:
“`
docker network inspect my_bridge_network
“`
Bu komut, “my_bridge_network” ağı hakkında bilgi sunar. IP aralıkları, bağlı konteynerler ve diğer ağ detayları burada listelenir. Ağ üzerinde değişiklikler yapılmak isteniyorsa, mevcut ağın silinmesi ve yeniden oluşturulması gerekebilir.
Güvenlik ve İzolasyon
Docker’ın sağladığı bridge ağ yapısı, konteynerler arasında bir güvenlik duvarı işlevi görür. Her konteyner, kendi izole edilmiş ağ ortamında bulunduğu için diğer konteynerlerden bağımsız olarak çalışabilir. Ancak, bu izolasyon, istemlerin hangi noktalarında gerektiğinde açılabilir. Örneğin, bir konteynerden dışarıya erişim sağlamak istendiğinde, port yönlendirmesi yapılabilir. Bu sayede belirli portlar dışarıya açılarak, belirli hizmetlere erişim sağlanabilir.
Sonuç
Docker bridge network, konteynerlerin birbirleriyle ve host sistemiyle etkili bir şekilde iletişim kurmasını sağlamak amacıyla kullanılan temel bir ağ yapısıdır. Bridge ağları, uygulama geliştirme ve dağıtım süreçlerini kolaylaştırırken, aynı zamanda güvenliği ve izolasyonu artırır. Kullanım esnekliği ve yönetim kolaylığı sunarak, geliştiricilerin konteyner tabanlı uygulamalarını daha verimli bir şekilde oluşturmalarına ve sürdürmelerine yardımcı olur.