Bir proxy konteyneri DNS konteynerini neden otomatik olarak kullanmaz
Docker ana bilgisayarını paylaşmak, ağı paylaşmak ve bir çözümleyici seçmek üç farklı konudur. DNS sorgusunu proxy'nin içinden izleyin.
Bir proxy ile bir DNS sunucusunu aynı Docker ana bilgisayarında çalıştırmak, DNS yollarını birbirine bağlamaz. Üç ayrı ilişki önemlidir:
- Ağ erişilebilirliği. Ayrı Compose projeleri genellikle ayrı varsayılan ağlara sahiptir. Hizmetleri uygun ortak bir ağa yerleştirin; ister tek bir proje içinde olsun ister projeler arasında açıkça paylaşılan bir ağ üzerinden.
- Hizmet keşfi. Özel bir Docker ağının yerleşik DNS'i konteyner adlarını çözebilir. Bu, bir uygulamanın komşusunu keşfetmesini sağlar; ancak o komşuyu otomatik olarak kendi DNS çözümleyicisi seçmez.
- Çözümleyici seçimi. Proxy konteynerinin içinde kullanılan çözümleyiciyi belirleyin. Compose'un
dnsalanı DNS sunucu adreslerini alır. Bir uygulamada çözülendns.localgibi bir ad, onu bu alan için geçerli bir değer yapmaz.
Sorguyu proxy konteynerinden yapılandırılmış çözümleyici adresine kadar izleyin. O adreste bir yol ve bir DNS dinleyicisi bulunduğunu doğrulayın. Ana bilgisayarın 53 numaralı bağlantı noktasını yayımlamak ana bilgisayar tarafında bir erişim yolu oluşturur; ancak konteynerlere bunu kullanmalarını söylemez. Ağı paylaşan konteynerler bunun yerine doğrudan iletişim kurabilir.
Yapılandırma DNS konteynerinin adresine atıfta bulunuyorsa, uyumlu IPAM yapılandırması altında onu sabit tutun. Dünkü konteynerden kopyalanan dinamik olarak atanmış bir adres, yeniden oluşturma sırasında başarısız olabilir. Çözümleyicinin üst akış yolunu da inceleyin: yanıtsız sorguları kendisine geri iletmek, erişilemeyen bir çözümleyiciden farklı bir arıza yaratır.
Son olarak, hedefi kimin çözdüğünü belirleyin. CONNECT adını çözen bir HTTP proxy bu konteyner yolunu kullanabilir; yerel olarak çözen bir SOCKS istemcisi kullanmayabilir. Ana bilgisayardaki bir sorgu, ana bilgisayarın yolunu kanıtlar, proxy sürecininkini değil.