Docker Container’dan Host Uygulamalarına Erişim

cpynet docker network host access

Docker ile çalışırken, bazen container’ların host sistemdeki uygulamalara bağlanması gerekebilir. Örneğin, uygulamanızı Docker içinde çalıştırırken, bazı bileşenler hala host sistemde çalışıyor olabilir. Bu yazıda, Docker container’larından host sistemdeki uygulamalara erişmenin yollarını anlatacağım.

Docker Ağı Hakkında Temel Bilgiler

Docker container’ları, küçük sanal makineler gibi çalışır. Her biri izole edilmiştir ve varsayılan olarak birbirleriyle ve host ile iletişim kurmazlar. Docker, genellikle bir köprü ağı (bridge network) oluşturur ve bu, container’ların host’a doğrudan bağlanmasına izin vermez.

Container’ların Host Uygulamalarına Bağlanması

Docker kurulduğunda, docker0 adında bir sanal ağ arayüzü oluşturur ve bu genellikle 172.17.0.1 IP adresini alır. Container’lar bu ağa bağlıdır, bu nedenle host üzerindeki uygulamaların bu ağ üzerinden dinlemesi gerekir.

Örnek: Host Üzerinde MariaDB’yi Yapılandırma

MariaDB gibi bir veritabanının host üzerinde çalıştığını düşünelim. Bu veritabanına container’lar tarafından erişilmesini sağlamak için MariaDB’nin dinleme adresini docker0 IP’sine ayarlayabiliriz:

bind-address = 172.17.0.1

Bu ayar, MariaDB’yi tüm container’ların erişebileceği hale getirir. Şimdi, container’dan MariaDB’ye şu komutla bağlanabiliriz:

$ mariadb -h 172.17.0.1

Bu yöntem, TCP veya UDP protokolünü kullanan çoğu uygulama için geçerlidir. Örneğin, Redis veya Nginx gibi uygulamalar da benzer şekilde yapılandırılabilir.

Host Network Modunu Kullanma

En basit çözüm, container’ı host ağ modunda çalıştırmaktır. Bu modda, container ve host, aynı ağ yapılandırmasını paylaşır. Böylece container, host’un ağ arayüzlerine doğrudan erişebilir.

Container’ı host modunda başlatmak için şu komutu kullanabilirsiniz:

$ docker run --rm -it --network host alpine sh

Bu yapılandırmada, container içindeki 127.0.0.1 (localhost) adresi, doğrudan host’un kendisini işaret eder. Örneğin, host üzerindeki bir MariaDB veritabanına bağlanmak için şu komutu kullanabiliriz:

mariadb -h 127.0.0.1

Bu modun avantajı, tüm TCP ve UDP portlarının container tarafından erişilebilir hale gelmesidir. Ancak, bu durum izolasyonu azalttığı için güvenlik açısından dikkat edilmelidir.

Sonuç

Container’ların host sistemdeki uygulamalara erişimini sağlamak için iki temel yöntem vardır: docker0 IP adresini kullanarak uygulamaları dinletmek veya host ağ modunu kullanmak. Hangi yöntemin daha uygun olduğunu projenizin ihtiyaçlarına göre seçebilirsiniz.

Docker ile host ve container iletişimini kolaylaştırmak, bu yapılandırmalarla basit hale gelir. İhtiyaçlarınıza göre bu yöntemleri kullanarak esnek çözümler oluşturabilirsiniz.

Önceki Konu

Linux'ta Startup Script Çalıştırma

Sonraki Konu

Windows üzerinde Node.js ve npm Kurulumu

Bültenimize Abone Olun 📬

En son gönderilerimizin doğrudan e-posta kutunuza gelmesi için e-posta bültenimize abone olun.
Düşüncelerinizi özgür bırakın ✨