Docker Ağ Yapılandırması: Konteyner Bağlantısı ve İzolasyonu

Docker ağlarının çalışma mantığını, kullanıcı tanımlı ağların oluşturulmasını ve konteynerler arası iletişimi yönetmeyi öğrenin. Uygulama mimarinizi güvenli hale getirin.

L
Linuxize
0 görüntülenme
Docker Ağ Yapılandırması: Konteyner Bağlantısı ve İzolasyonu

Docker Ağlarına Giriş

Docker üzerinde tek bir konteyner çalıştırmak bir başlangıçtır, ancak gerçek dünya uygulamaları genellikle veritabanları, web sunucuları ve ters vekil sunucular (reverse proxy) gibi birden fazla servisin birbiriyle konuşmasını gerektirir. Docker ağ yönetimi, bu trafiği güvenli ve yönetilebilir bir şekilde kontrol etmenizi sağlar.

Varsayılan Ağ Sürücüleri

Docker kurulumuyla birlikte üç temel ağ sürücüsü gelir:

  • bridge: Tek bir ana makine üzerinde izole bir sanal ağ oluşturur. Varsayılan sürücüdür.
  • host: Konteyneri doğrudan ana makinenin ağ yığınına bağlar.
  • none: Konteynerin ağ erişimini tamamen keser.

Kullanıcı Tanımlı Ağlar

Varsayılan 'bridge' ağı, konteynerlerin birbirine isimle erişmesine izin vermez. Bu nedenle, üretim ortamlarında mutlaka kullanıcı tanımlı ağlar oluşturulmalıdır.

  1. Ağ Oluşturma: docker network create app_net komutu ile özel bir ağ oluşturun.
  2. Konteynerleri Bağlama: docker run --network app_net ... parametresini kullanarak konteynerleri bu ağa dahil edin.

Bu yapılandırma sayesinde, Docker'ın dahili DNS sunucusu konteyner isimlerini otomatik olarak çözümler.

Port Yayınlama (Publishing Ports)

Bir konteynerin dış dünyaya açılması için port yönlendirme gereklidir. -p host_port:container_port bayrağını kullanın:

docker run -d -p 8080:80 nginx
Uyarı: Portları sadece gerekli arayüzlere bağlayın. Örneğin 127.0.0.1:8080:80 kullanarak servisi sadece yerel makineye açabilirsiniz.

Konteyner İzolasyonu

Farklı ağlar kullanarak servislerinizi izole edebilirsiniz. Örneğin, veritabanını backend_net, web sunucusunu frontend_net üzerinde tutun. Uygulama konteyneriniz her iki ağa da bağlı kalarak bir köprü görevi görebilir.

Sorun Giderme

Eğer konteynerler birbirine ulaşamıyorsa:

  • Konteynerlerin aynı ağda olup olmadığını docker network inspect [ağ_adı] ile kontrol edin.
  • Servisin 0.0.0.0 adresini dinlediğinden emin olun.
  • docker network prune komutu ile kullanılmayan ağları temizleyerek çakışmaları önleyin.

Kaynak

Linuxize