Windows Container – Network Management

By | 02 December 2017

Merhaba,

Bu bölümde de networking konfigürasyonları ile devam edeceğiz.

Normalde container host’u ilk deploy ettiğiniz zaman otomatik olarak NAT(Network Address Translation) network’ü deploy edilir. Bu konfigürasyon c:\programdata\docker\config\deamon.json dosyası editlenerek düzenlenebilir.

Container host üzerindeki networkleri görüntülemek için aşağıdaki komutu host üzerinde çalıştırmamız yeterlidir.

Docker network ls

Henüz herhangi bir custom network konfigürasyonu yapılmadığı için sadece default Nat networkü görünmektedir.

Deply edilen network için daha fazla bilgi almak isterseniz aşağıdaki gibi network konfigürasyonu üzerinde inspect komutunu çalıştırabilirsiniz. Bu size container host üzerindeki bulunan seçtiğiniz network ile alakalı ayrıntılı bilgi verecektir.

Docker network inspect <Network name>

Komut çalıştırıldığında çıktı yukarıdaki şekilde olduğu gibi JSON formatındadır. Hatta bu network’te bulunan container’lar da “Containers” sekmesinde listelenmektedir. Bu sayede de network üzerinden bağlı bulunan container bilgisine kolaylıkla ulaşılabilmektedir.

Şimdi container host üzerindeki network bileşenlerini öğrendiğimize göre, kendi netwoklerimizi oluşturarak başlayabiliriz. Windows Container makale serisinin ilk bölümlerinde Windows Container’larda kullanılabilen network tiplerinden bahsetmiştim. Bu sebeple bu makalede bu konuları tekrar anlatmayacağım. İhtiyacınız var ise aşağıdaki linki kullanarak ilgili makaleye erişebilirsiniz.

http://www.firatyasar.com.tr/genel/windows-containers-container-networking.htm

İhtiyaçlarımızıa bağlı olarak container host üzerinde birden fazla network oluşturabiliriz. Bu kullandığımız sanallaştırma mimarilerinde tanımladığımız networklerden açıkcası çok da farklı değil. Burada yoğun olarak kullanacağımız iki tip network bulunur.

  • Nat
  • Transparent

Nat network ile container’lar dış dünyaya açılırken host üzerindeki ip ye natlanırlar ve container’lara ulaşımda bu ip üzerinden port mapping ile yapılır. Transparent networkte ise container’lar host’un bulunduğu ortamdaki DHCP sunucusundan kendilerine IP alıp host ile aynı ortamda ulaşılabilir duruma gelirler.

Docker mimarisinde yeni bir network oluşturmak için create komutu –d parametresi ile kullanılır. Bu parametreye değişken olarak kullanılacak network tipi verilir. Şimdi bir transparent network oluşturarak devam edelim.

docker network create -d transparent externalNetwork

Transparent network’ümüzü oluşturduktan sonra bir adet container’ı deploy edip bu networke attach edelim.

docker run -it –network=externalNetwork microsoft/nanoserver powershell.exe

Container içerisinde açılan powerhsell penceresinde ipconfig komutunu çalıştırdığınızda container’ınızın ortamda bulunan DHCP sunucusundan IP aldığını görebilirsiniz.

Container host makineniz HyperV üzerinde bir sanal makine ise, sanal makinenin network ayarlarından Mac Spoofing özelliğini etkinleştirmeniz gerekir. Aksi taktirde ortamda bulunan DHCP sunucusundan IP alamayacaktır.

Eğer container’a transparent network üzerinde static IP adresi atamak isterseniz, komutu aşağıdaki şekilde –ip parametresi ile modifiye etmeniz yeterli olacaktır. Böylece container static IP adresi alacaktır.

docker run -it –network=externalNetwork –ip=192.168.1.100 microsoft/nanoserver powershell.exe

Belli sebeblerden ötürü ikinci bir NAT networküne ihtiyaç duyabilirsiniz. İkici bir NAT network’ü oluşturmak oldukça kolaydır. Hatta oluştururken network’ün subnetini ve gateway’ini de belirleyebilirsiniz.

docker network create -d nat –subnet=192.168.2.1/24 –gateway=192.168.2.1 nat2

Oluşturmuş olduğunuz bir network’ü silmekte oldukça basittir. Bu amaçla aşağıdaki komutu çalıştırmanız yeterlidir.

docker network rm <Network name>

Temel anlamda network komutları ve kullanımları bu şekilde. Umarım faydalı bir makale olmuştur.

Bir sonraki bölümde port mapping ile devam edeceğim.

Görüşmek üzere.

Kaynak: Windows Container eBook

Fırat

Leave a Reply