Zašto proxy kontejner ne koristi DNS kontejner automatski
Deljenje Docker hosta, deljenje mreže i izbor resolvera tri su različite stvari. Pratite DNS upit iz unutrašnjosti proxyja.
Pokretanje proxyja i DNS servera na istom Docker hostu ne povezuje njihove DNS putanje. Važna su tri odvojena odnosa:
- Mrežna dostupnost. Odvojeni Compose projekti obično imaju odvojene podrazumevane mreže. Stavite usluge na odgovarajuću deljenu mrežu, bilo unutar jednog projekta bilo kroz mrežu koja je izričito deljena između projekata.
- Otkrivanje usluga. Ugrađeni DNS prilagođene Docker mreže može razrešiti imena kontejnera. To aplikaciji omogućava da otkrije suseda; ali ne bira tog suseda automatski kao svoj DNS resolver.
- Izbor resolvera. Utvrdite koji se resolver koristi unutar proxy kontejnera. Polje
dnsu Composeu prima adrese DNS servera. Ime poputdns.localkoje se razrešava u aplikaciji ne čini ga važećom vrednošću tog polja.
Pratite upit od proxy kontejnera do njegove konfigurisane adrese resolvera. Potvrdite da na toj adresi postoji ruta i DNS slušalac. Objavljivanje host porta 53 stvara pristupnu putanju na strani hosta; ali ne govori kontejnerima da je koriste. Kontejneri koji dele mrežu mogu umesto toga komunicirati direktno.
Ako konfiguracija upućuje na adresu DNS kontejnera, održavajte je stabilnom uz kompatibilnu IPAM konfiguraciju. Dinamički dodeljena adresa kopirana iz jučerašnjeg kontejnera može ne uspeti pri ponovnom stvaranju. Proverite i uzvodnu putanju resolvera: prosleđivanje neodgovorenih upita nazad njemu samom stvara drugačiji kvar od nedostupnog resolvera.
Na kraju, utvrdite ko razrešava odredište. HTTP proxy koji razrešava CONNECT ime može koristiti ovu putanju kroz kontejner; SOCKS klijent koji razrešava lokalno možda neće. Pretraga na hostu dokazuje rutu hosta, ne rutu proxy procesa.