Provozování proxy a DNS serveru na jednom Docker hostiteli jejich DNS cesty nespojí. Záleží na třech oddělených vztazích:

  • Dostupnost sítě. Samostatné Compose projekty mají obvykle samostatné výchozí sítě. Umístěte služby do vhodné sdílené sítě, buď v rámci jednoho projektu, nebo přes síť výslovně sdílenou mezi projekty.
  • Zjišťování služeb. Vestavěný DNS vlastní Docker sítě umí přeložit názvy kontejnerů. To aplikaci umožní objevit souseda; ale automaticky ho nezvolí jako svůj DNS resolver.
  • Volba resolveru. Určete resolver používaný uvnitř proxy kontejneru. Pole dns v Compose přijímá adresy DNS serverů. Název jako dns.local, který se v aplikaci přeloží, z něj nedělá platnou hodnotu tohoto pole.

Sledujte dotaz z proxy kontejneru k jeho nakonfigurované adrese resolveru. Ověřte trasu a DNS posluchač na této adrese. Publikování portu 53 na hostiteli vytváří přístupovou cestu na straně hostitele; neříká však kontejnerům, aby ji používaly. Kontejnery sdílející síť mohou místo toho komunikovat přímo.

Pokud konfigurace odkazuje na adresu DNS kontejneru, udržujte ji stabilní při kompatibilní konfiguraci IPAM. Dynamicky přidělená adresa zkopírovaná z včerejšího kontejneru může při opětovném vytvoření selhat. Prozkoumejte také upstream cestu resolveru: přeposílání nezodpovězených dotazů zpět sobě samému vytváří jinou poruchu než nedostupný resolver.

Nakonec určete, kdo překládá cíl. HTTP proxy překládající název CONNECT může tuto cestu přes kontejner použít; SOCKS klient překládající lokálně možná ne. Dotaz na hostiteli dokazuje trasu hostitele, ne trasu procesu proxy.

Související články