DockerDevOps

Docker Network

Translate This Page:

Select your language: 

Docker networke genel bakış

Docker Platformunun en önemli özelliklerinden biri de containerların birbirinden izole çalışabilmesidir. Bu sayede sistemlerde herhangi bir sorun olduğunda sadece sorun olan yerin etkilenmesi sistemler için bir avantajdır. Containerlar Default durumda birbirinden izole (bağımsız) çalışırlar. Ancak gerçek hayatta ve production ortamlarında containerları birbiriyle iletişimde olmasını isteriz.

İşte tam bu noktada docker Networking bu sorunu çözmek için ihtiyacımız olan en basit yapıdan en esnek yapıya kadar sorunlarımıza çözümler sunuyor.

Docker containerları birbirlerine ve dış dünyaya bağlamaktır, böylece birbirleriyle iletişim kurabilirler ve Docker Host ile konuşabilirler . Docker containerları Docker platformunuzda yer almayan başka networkteki kanaklarla birbirine bağlamanıza olanak tanıyan bir yapıya sahip.

Docker, ağ iletişimi için CNM Konteyner Ağ Modelini kullanır. Bu model, birden çok ağ sürücüsü kullanan konteynerler için ağ oluşturmak için gereken adımları standart hale getirir. Böylece ister local ister cloud base bir platform kullanıyor olun container yapınızı her yerde çalıştırabilir ve her yere taşıyabilir olursunuz.

Zaten container mimarisinin ana temelide platform bağımsızlığı üzerine kurulu değllmidir !

C:\Users\bimhmr09\Desktop\Makaleler\DevOps\6-Docker Network\CNN-Model.png

Container Ağ Modeli (CNM)

Konteyner ağ modeli, Container networkün omurgası olarak düşünülebilir. Ağı, sürücüler (bridge, overlay, weave vb.) kullanan bir eklenti olarak uygulamak yerine, container çalışma zamanından ayrı bir kitaplık olarak tutmayı amaçlar.

C:\Users\bimhmr09\Desktop\Makaleler\DevOps\6-Docker Network\Docker_network.png

CNM modelinin arkasındaki tüm felsefe budur. Birden çok ağ sürücüsünü desteklemenin yanı sıra ortak ağ oluşturmanın karmaşıklığını çeşitlendirmek için soyutlama katmanı amacına hizmet ettiğini düşünebilirsiniz. Modelin üç ana bileşeni vardır –

Korumalı alan – bir kapsayıcının ağ yığınının yapılandırmasını içerir.

  • Sandbox :bir containerın ağ birimlerine bağlanmasını sağlar.
  • Endpoint : Ayrılmış networke dahil eder.
  • Network : birbirinden ayrı networkleri birleştirir.

C:\Users\bimhmr09\Desktop\Makaleler\DevOps\6-Docker Network\Docker_network_ccn_model.png

Proje, GitHub’da barındırılmaktadır. CNM modeli hakkında daha fazla bilgi edinmekle ilgileniyorsanız, buradan devam etmenizi ve kapsamlı bir şekilde okumanızı tavsiye ederim.

Docker Network Driver

Ağ sürücüleri, Docker Konteynerleri için gerçek ağ uygulamalarını sağlayan takılabilir arabirimlerdir. Docker, hizmet keşfi, şifreleme, çok ana bilgisayarlı ağ iletişimi vb. gibi birçok kullanım durumu için temel ağ işlevselliği sağlayan birkaç sürücüyle birlikte gelir.

Ardından, özel kullanım durumları için 3. taraf sürücüler (eklenti sağlayıcıları tarafından) mevcuttur.Son olarak, eğer mevcut olanlar yeterli değilse, kendi özel sürücülerini bile oluşturabilirler (gerçi bu nadiren gerekli olacaktır).

5 kullanıma hazır ağ sürücüsü şunlardır:

  • None
  • Bridge
  • Host
  • Overlay
  • Macvlan

hangi network sürücü kullanılacaksa, aşağıdaki gibi komut –network parametresiyle belirtilebilir.

$ docker network create --driver <dahili driver türü> network_adı

None Driver

Driver none , bir container için ağı devre dışı bırakarak onu diğer containerlarda izole eder. Bunu sanal bir makinenin network kartını disable ederek networkten ayırdığınızı düşünebilirsiniz.

C:\Users\bimhmr09\Desktop\Makaleler\DevOps\6-Docker Network\driver-none.jpg

Aşağıdaki komutla oluşturacağınız bir container’ı none networke dahil edebilirsiniz.

docker container run --network none alpine

Bridge Network

Bridge network (körüleme), bir container dağıttığınızda otomatik olarak oluşturulan default ağdır yani yeni bir container çalıştırığınızda eğer özellikle network belirtmediyseniz standart olarak burada oluşturulur.

Bridge network, aynı bridge networke bağlı konteynerlerin iletişim kurmasına izin veren yazılımsal bir ağdır.Bridge network, bu ağdaki konteynerlerin iletişim kurabilmesi için ana bilgisayardan izole ayrı bir network oluşturur.

C:\Users\bimhmr09\Desktop\Makaleler\DevOps\6-Docker Network\Bridge_network.png

Aşağıdaki komutla yeni bir bridge network yarabilirsiniz.

docker network create --driver bridge bridge_network01

Eğer oluşturacağınız networkte ip bloğunu siz belirlemek istiyorsanır aşağıdaki şekilde networkünüzü yaratabilirsiniz.

docker network create --driver=bridge --subnet=10.10.0.0/16 --ip-range=10.10.10.0/24 --gateway=10.10.10.10 bridge_network02

Oluşturduğum networkleri görüntülüyorum.

serdar@docker01:/$ docker network ls
NETWORK ID     NAME               DRIVER    SCOPE
4f6fc9e4c9f8   bridge             bridge    local
68a6d95e2785   bridge_network02   bridge    local
0788e0210252   host               host      local
2b2c01b138db   none               null      local
serdar@docker01:/$

Container oluştururken network seçmek

Şimdi az önce oluşturduğum “bridge_network02 ” networküne bir container oluşturup bu ağa dahil edeceğim.

docker container run -d --network bridge_network02 alpine

Çalışan containerı başka bir networke bağlamak

docker network connect bridge_network02 <cantainerName/ID>    

Çalışan containerı networkten çıkarmak

docker network disconnect bridge_network02 <cantainerName/ID>   

Docker network inspect

“inspect” komutu ile docker dünyasında herhangi bir docker objesinin/bileşenin detaylarını görüntüleyebiliriz.

serdar@docker01:/$ docker network inspect bridge_network02
[
    {
        "Name": "bridge_network02",
        "Id": "e2f9714562ad0bafc09d808892e6c1526b104195a75c0717ecdf471115ed7261",
        "Created": "2023-03-25T10:52:23.541039429+03:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "10.10.0.0/16",
                    "IPRange": "10.10.10.0/24",
                    "Gateway": "10.10.10.10"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]
serdar@docker01:/$

Host Network

Bu Network bağlantısı ana bilgisayar(docker host) ile bu ağa bağlı konteynerleri arasındaki tüm ağ izolasyonlarını ortadan kaldırır. yani oluşturduğunuz containerlar docker host makine ile aynı swithce bağlı gibi çalışır. host makine ile network performansı optimize etmek için yararlı olabilir .oluşturulan containerlar için herhangi bir NAT tanımı gerektirmez.

Not: host networking yalnızca Linux ana bilgisayarlarında çalışır ve Mac için Docker Desktop, Windows için Docker Desktop veya Windows Server için Docker EE’de desteklenmez.

C:\Users\bimhmr09\Desktop\Makaleler\DevOps\6-Docker Network\hostnetworking.png

Overlay Networking

Overlay network’ler birden fazla docker hostu birbirine bağlar ve bunlar içindeki hizmetlerin birbirleriyel haberleşmesini sağlar. Bu yapı docker swarm gibi platformlarda kullanılmaktadır.Burada öncelikli dikkat edilmesi gereken nokta, Docker engine’lerin swarm modunun cluster için etkinleştirilmesidir.

Şema-1

C:\Users\bimhmr09\Desktop\Makaleler\DevOps\6-Docker Network\overlay_network.png

Şema-2 C:\Users\bimhmr09\Desktop\Makaleler\DevOps\6-Docker Network\overlay_net.jpg

Macvlan Networking

Macvlan network’leri, bir MAC adresini container’a atamanızı sağlar böylece Container’ın ağınızda fiziksel bir cihaz olarak görünmesini sağlayabilirsiniz. Bu yöntemde Docker daemon, network trafiğini container MAC adreslerine göre yönlendirir. Bu yöntem MAC adresi gerektiren eski uygulamalarda kullanılır.

C:\Users\bimhmr09\Desktop\Makaleler\DevOps\6-Docker Network\Mac_Vlan_Network.png

Bu yazıda docker networkü inceledik başka bir makalede görüşmek üzere.

Serdar Bayram

Bu yazı blog üzerinde Serdar Bayram tarafından hazırlanıp paylaşılmıştır. 2009 yılında açılan blogum kısa zaman içerisinde paylasımları ile dikkat cekip büyük bir izleyici kitlesine sahip olmuştur.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu