🌐 Network'ler

Network'ler: Docker network bir ofis telefon rehberidir: aynı network'teki container'lar birbirini masa koordinatı (her restart'ta değişen IP adresi) ezberleyerek değil, İSİMLE a

Docker network bir ofis telefon rehberidir: aynı network'teki container'lar birbirini masa koordinatı (her restart'ta değişen IP adresi) ezberleyerek değil, İSİMLE arar (dahili hat 'db'). Peki Docker neden container IP'lerini hardcode etmene izin vermek yerine isim tabanlı keşifte ısrar eder? Java kodunun somut class yerine interface'e bağımlı olmasıyla aynı sebepten: implementasyon (IP) her restart'ta değişebilirken sözleşme (servis adı) sabit kalır. Bu, QA otomasyonundaki en yaygın acemi hatasıdır: test container'ın localhost:5432'yi arar ve 'connection refused' alır — çünkü container İÇİNDE localhost, senin makinen değil container'ın KENDİSİDİR. Testi ve veritabanını aynı network'e koy ve 'db:5432'yi çevir — masayı değil, rehberi ara.

Container network yönetimi

🎬 "localhost:5432" Neden Çalışmıyor? — Container İçinden Bakış

Test container'ı, veritabanına ulaşmak için `localhost:5432` adresini dener — laptop'ta bu hep işe yaramıştı, alışkanlık böyle.

PATLAR: `Connection refused`. Çünkü bir container İÇİNDE "localhost", host makineyi DEĞİL, container'ın KENDİSİNİ işaret eder — ve o container'da 5432 portunu dinleyen hiçbir şey yok.

Kontrast — ofis telefon rehberi metaforu: masa numarasını (IP) ezberlemek yerine isimle (extension) ararsın. `docker network create qa-network` bu rehberi kurar.

db ve test container'ları AYNI ağa katılır: `--network qa-network`. Artık ikisi de aynı rehberde kayıtlı — birbirlerini isimle bulabilirler.

Test artık `localhost:5432` değil, `db:5432`'yi arar — container ADINI dialer'da yazmak, extension'ı çevirmek gibidir. Docker bu ismi otomatik DNS ile IP'ye çözer.

Final — Java köprüsü: sabit bir IP'ye bağımlı kod, somut bir sınıfa bağımlı kod gibidir — implementasyon her yeniden başlatmada değişebilir. Servis ADINA bağımlı olmak ise bir interface'e bağımlı olmaktır: sözleşme sabit kalır.

Pratik: Güvenli docker run komutu kur

Referanstaki tam komutu incele, sonra editörde boşlukları doldur: -d, --name, -p ve -v flag'lerini doğru sırayla yaz.

Container Komut Yaşam Döngüsü

Image localde yoksa docker pull ile indirilir veya docker run bunu otomatik yapar.

docker run yeni bir container oluşturur ve process'i başlatır.